MySQL存储引擎 作为可插拔式的组件提供: -负责为数据库执行实际的数据I/O操作,不同的存储引擎,其存储数据的方式也不同。 -用户通过连接访问MySQL数据库,根据实际需要选用何种存储引擎,避免大的编码更改。

默认的存储引擎: -MySQL 5.0/5.1 ---> MyISAM -MySQL 5.5/5.6 ---> InnoDB

列出可用的存储引擎类型: 格式:SHOW ENGINES; 或SHOW ENGINES\G

修改表的存储引擎: 建表时,使用默认存储引擎。 -SHOW CREATE TABLE xxx\G; 可查看

例:
mysql>create table ku.abc(
>id int(4),
>name char(5)
>) engine=innodb;

mysql>show create table ku.abc\G;

更改现有表的存储引擎: -使用ALTER TABLE 改变引擎设置。 mysql>alter table ku.abc engine=myisam; msyql>show create table ku.abc\G;

设置默认存储引擎: 修改配置文件/etc/my.cnf vim /etc/my.cnf [mysqld] .... default-storage-engine=InnoDB

service mysql restart

存储引擎的特点 MyISAM存储引擎的主要热点: 1.支持表级锁定,不支持行级锁定。 2.不支持事务 3.不享表空间 4.多用在查询、插入操作较多的表。

相关的表文件: 表.MYI 存放索引信息 表.MYD 存放数据 表.frm 存放表结构

InnoDB存储引擎主要特点: 1.支持表级/行级锁定 2.支持事务、事务回滚、支持外键 3.共享表空间

注释: 锁的作用:解决并发访问冲突问题。 事务: 一次数据访问从开始到结束的过程 称为事务 事务回滚: 一次数据访问 任意一步执行失败,恢复所有操作。 事务的特性: 一致性 原子性 隔离性 事务日志文件:记录对innodb存储引擎的表执行过的操作。

相关的表文件: 表.frm 存放表结构 表.ibd 存放索引信息+数据 ibdsta1 ib_logfile0 、ib_logfile1

接收写操作多的表适合使用innodb存储引擎。 接收读操作多的表适合使用myisam存储引擎。

锁粒度: 1.表级锁:一次直接对整张表进行加锁。 2.行级锁:只锁定某一行 3.页级锁:对整个页面(MySQL管理数据的基本存储单位)进行加锁。

锁类型: 1.读锁(共享锁):支持并发读。 2.写锁(互斥锁、排它锁):是独占锁,上锁期间其它线程不能读表或写表。

查看当前的锁状态: -检查Table_lock开头的变量,%作通配符。 mysql>SHOW STATUS LIKE "Table_lock%"