mysql----存储引擎
来源:互联网 发布:游戏编程学什么语言 编辑:程序博客网 时间:2024/06/09 21:20
1,创建表的时候,使用存储引擎
mysql> create table ai(id int) engine=Myisam;Query OK, 0 rows affected (0.03 sec)
2,查看存储引擎
mysql> show engines;+--------------------+---------+----------------------------------------------------------------+--------------+------+------------+| Engine | Support | Comment | Transactions | XA | Savepoints |+--------------------+---------+----------------------------------------------------------------+--------------+------+------------+| InnoDB | DEFAULT | Supports transactions, row-level locking, and foreign keys | YES | YES | YES || MRG_MYISAM | YES | Collection of identical MyISAM tables | NO | NO | NO || MEMORY | YES | Hash based, stored in memory, useful for temporary tables | NO | NO | NO || BLACKHOLE | YES | /dev/null storage engine (anything you write to it disappears) | NO | NO | NO || MyISAM | YES | MyISAM storage engine | NO | NO | NO || CSV | YES | CSV storage engine | NO | NO | NO || ARCHIVE | YES | Archive storage engine | NO | NO | NO || PERFORMANCE_SCHEMA | YES | Performance Schema | NO | NO | NO || FEDERATED | NO | Federated MySQL storage engine | NULL | NULL | NULL |+--------------------+---------+----------------------------------------------------------------+--------------+------+------------+9 rows in set (0.00 sec)
3,存储引擎—MyISAM
mysql默认存储引擎,不支持事务,不支持外键,访问速度快,对事物完整性没有要求的比如select,insert为主的应用可以使用此引擎来创建表
每个MyISAM在磁盘上存储成3个文件,扩展名分别为
.frm(存储表定义)
.MYD(MYData, 存储数据)
.MYI(MYIndex, 存储索引)
表可能会被损坏
可以通过
mysql> check table ai;+---------+-------+----------+----------+| Table | Op | Msg_type | Msg_text |+---------+-------+----------+----------+| user.ai | check | status | OK |+---------+-------+----------+----------+1 row in set (0.01 sec)
来检查表是否损坏
4,innodb mysql仅有的支持外建的存储引擎(创建外键的时候,要求父表必须有对应的索引,子表在创建外键的时候也会自动创建对应的索引)
mysql> create table country(country_id smallint unsigned not null auto_increment, country varchar(50) not null, last_update timestamp not null default current_timestamp on update current_timestamp, primary key (country_id))engine=innodb default charset=utf8;Query OK, 0 rows affected (0.03 sec)mysql> desc country;+-------------+----------------------+------+-----+-------------------+-----------------------------+| Field | Type | Null | Key | Default | Extra |+-------------+----------------------+------+-----+-------------------+-----------------------------+| country_id | smallint(5) unsigned | NO | PRI | NULL | auto_increment || country | varchar(50) | NO | | NULL | || last_update | timestamp | NO | | CURRENT_TIMESTAMP | on update CURRENT_TIMESTAMP |+-------------+----------------------+------+-----+-------------------+-----------------------------+3 rows in set (0.01 sec)
mysql> create table city(city_id smallint unsigned not null auto_increment, city varchar(50) not null, country_id smallint unsigned not null, last_update timestamp not null default current_timestamp on update current_timestamp, primary key (city_id), key idx_fk_country_id(country_id), constraint fk_city_country foreign key (country_id) references country (country_id) on delete restrict on update cascade)engine=innodb default charset=utf8;Query OK, 0 rows affected (0.07 sec)mysql> desc city;+-------------+----------------------+------+-----+-------------------+-----------------------------+| Field | Type | Null | Key | Default | Extra |+-------------+----------------------+------+-----+-------------------+-----------------------------+| city_id | smallint(5) unsigned | NO | PRI | NULL | auto_increment || city | varchar(50) | NO | | NULL | || country_id | smallint(5) unsigned | NO | MUL | NULL | || last_update | timestamp | NO | | CURRENT_TIMESTAMP | on update CURRENT_TIMESTAMP |+-------------+----------------------+------+-----+-------------------+-----------------------------+4 rows in set (0.01 sec)
子表的外键指定是on delete restrict on update cascade 主表删除记录时,对应子表有对应记录,不允许删除,主要是更新操作时,子表有记录,子表对应更新
5,memory
mysql> create table memoryDemo engine=memory select city_id, city, country_id from city group by city_id;Query OK, 0 rows affected (0.03 sec)Records: 0 Duplicates: 0 Warnings: 0mysql> select count(*) from memoryDemo;+----------+| count(*) |+----------+| 0 |+----------+1 row in set (0.01 sec)
hash索引,存储在内存中
6,merge
底层是myisam
存储引擎选择
myisam
默认的mysql插件式存储,如果应用以读操作和插入操作为主,只有很少的更新和删除操作,并且对事务的完整性,并发要求不高的情况下选择
innodb
用于事务处理应用程序,支持外键,如果应用对事务的完整性有比较高的要求,在并发条件下要求数据的一致性,数据操作处理查询,插入以外还有更新和删除操作,innodb存储引擎除了有效的降低由于删除和更新导致的锁定,还能保证事务的完整提交(commit)和回滚(RollBack)对于类似计费系统或者财务系统等对数据准确性要求比较高的系统
memory
将所有的数据都保存在ram中,在需要快速定位记录和其他类似数据的环境下,可提供极快的访问,memory的缺陷是对表的大小有限制,太大的表无法cache在内存中,其次是要确保表的数据可以恢复,数据库异常终止后表的数据是可以恢复的,memory表通常用于更新不太频繁的小表
merge
用于将一系列相同的myisam表以逻辑方式组合在一起,并作为一个对象引用他们,merge表的优点在于可以突破单个myiscam表大小的限制,并且通过将不同的表分布在多个磁盘上,可以有效的改善merge表的访问效率,这对于诸如多数据仓储等vldb环境
- 【MySQL】MySQL存储引擎
- 【MySQL】MySQL存储引擎
- mysql federated存储引擎引擎
- MySQL的存储引擎
- 1.5. MySQL存储引擎
- mysql存储引擎
- MySQL 存储引擎
- MySQL存储引擎
- Mysql的存储引擎
- MySQL存储引擎
- MySQL存储引擎-应用
- mysql存储引擎
- MySQL存储引擎认知
- MySQL存储引擎选择
- mysql archive存储引擎
- MySQL存储引擎
- Mysql数据库存储引擎
- mysql存储引擎比较
- unicode 换行符
- Android设计模式之模板(抽象类abstract)
- bfs模板
- 没有Spring的CXF的完整搭建
- java 数组转换成字符串 类似 js array的join
- mysql----存储引擎
- jstl 计算时的小问题
- Java浮点数的精确计算及表示
- jquery uploadify 不支持FF 的解决办法
- retrofit 2.0使用详解
- oracle11g 空表不能exp导出的问题
- oracle 创建表空间命令
- SSL 与 数字证书 的基本概念和工作原理(转)
- js查询手机号码归属地