mysql默认引擎是MyISAM表都对应于硬盘上的三个文件,这三个文件有一样的文件名,但是有不同的扩展名以只是其类型用途,.frm文件保存表的定义,但是这个文件并不是MyISAM引擎的一部分,而是服务器的一部分;.MYD》》data保存表的数据,.MYI>>index是表的索引文件。
MyISAM引擎特点:
①不支持事务
②表级锁定(更新锁整个表)
③读写互相阻塞(读的时候不能写,写的时候可以读)
④只会缓存索引
缓存数据索引的参数:
grep key_buffer my.cnf
key_buffer_size=16M
⑤读写速度较快,占用资源较少(硬件不太好的情况下,比较好)
⑥不支持外建约束、
⑦MyISAM引擎使用的生产业务场景
MyISAM引擎适用的生产业务场景
1:不需要事务支持的业务,一般为读数据比较多的网站应用
2:并发相对比较低的业务(锁定机制问题)
3:数据修改相对较少的业务(阻塞问题)
4:以读为主的业务,例如:www.blog5:
5:对数据一致性要求不是非常高的业务
InnoDB引擎
1:读取速度一般。
2:更新时一般是锁定当前行
3:占用资源较多
4:适合读写多的业务。如:bbs。微博,sns等
5:支持事务,分区,表空间等
6.支持外键约束,不支持全文索引
InnoDB
引擎特点
1:支持事务:支持4个事务隔离级别,支持多版本读
2:行级锁定(*更新时一般是锁定当前行,):通过索引实现,全表扫描仍然会是表锁,注意,间隙锁影响,
3:读写阻塞与事务隔离级别相关
4:具有非常高效的缓存特性,能缓存索引,也能缓存数据
5:整个表和主键以Cluster方式存储,组成一颗平衡树
6:所有Secondary Index都会保存主键信息
7:
InonoDB引擎适用的生产业务场景
1:需要事务支持(具有较好的事务特性)
2行级锁定对高并发有很好的适应能力,但需要确保查询是通过索引完成
3:数据更新较为频繁的场景,如:bbs,sns等
数据一致性要求较高的业务
5:硬件设备内存较大,可以利用InnoDB较好的缓存能力来提高内存利用率,尽可能减少磁盘IO
grep -i innodb my.cnf
缓存innodb数据的参数 innodb_buffer_pool_size 一般很大
将不同的数据放在不同的分区里,用不同的路径来调用
生产环境中如何批量更改MySQL引擎
①:mysql命令语句修改(个别表)
创建后引擎的更改。5.0以上
ALTER TABLE et ENGINE = INNODB;
ALTER TABLE `act_twoyear` ENGINE = InnoDB
ALTER TABLE `bc_admin` ENGINE=MyISM;
show create table et;
② 使用sed对备份内容进行引擎转换:整体替换()
nohup sed -e 's/MyISAM/InnoDB/g'old2boy.sql > oldboy_1.sql&
③) mysql_convert_table_format命令修改
InonoDB引擎与myisam引擎
差别比较小,只有server_id差别
key_buffer_size大小的
在生产环境中如何选用MySQL的引擎?
在一般的既有读又有写的业务中,建议使用Innodb引擎,一句话,尽可能多的使用innodb引擎
MyISAM引擎特点:
①不支持事务
②表级锁定(更新锁整个表)
③读写互相阻塞(读的时候不能写,写的时候可以读)
④只会缓存索引
缓存数据索引的参数:
grep key_buffer my.cnf
key_buffer_size=16M
⑤读写速度较快,占用资源较少(硬件不太好的情况下,比较好)
⑥不支持外建约束、
⑦MyISAM引擎使用的生产业务场景
MyISAM引擎适用的生产业务场景
1:不需要事务支持的业务,一般为读数据比较多的网站应用
2:并发相对比较低的业务(锁定机制问题)
3:数据修改相对较少的业务(阻塞问题)
4:以读为主的业务,例如:www.blog5:
5:对数据一致性要求不是非常高的业务
InnoDB引擎
1:读取速度一般。
2:更新时一般是锁定当前行
3:占用资源较多
4:适合读写多的业务。如:bbs。微博,sns等
5:支持事务,分区,表空间等
6.支持外键约束,不支持全文索引
InnoDB
引擎特点
1:支持事务:支持4个事务隔离级别,支持多版本读
2:行级锁定(*更新时一般是锁定当前行,):通过索引实现,全表扫描仍然会是表锁,注意,间隙锁影响,
3:读写阻塞与事务隔离级别相关
4:具有非常高效的缓存特性,能缓存索引,也能缓存数据
5:整个表和主键以Cluster方式存储,组成一颗平衡树
6:所有Secondary Index都会保存主键信息
7:
InonoDB引擎适用的生产业务场景
1:需要事务支持(具有较好的事务特性)
2行级锁定对高并发有很好的适应能力,但需要确保查询是通过索引完成
3:数据更新较为频繁的场景,如:bbs,sns等
数据一致性要求较高的业务
5:硬件设备内存较大,可以利用InnoDB较好的缓存能力来提高内存利用率,尽可能减少磁盘IO
grep -i innodb my.cnf
缓存innodb数据的参数 innodb_buffer_pool_size 一般很大
将不同的数据放在不同的分区里,用不同的路径来调用
生产环境中如何批量更改MySQL引擎
①:mysql命令语句修改(个别表)
创建后引擎的更改。5.0以上
ALTER TABLE et ENGINE = INNODB;
ALTER TABLE `act_twoyear` ENGINE = InnoDB
ALTER TABLE `bc_admin` ENGINE=MyISM;
show create table et;
② 使用sed对备份内容进行引擎转换:整体替换()
nohup sed -e 's/MyISAM/InnoDB/g'old2boy.sql > oldboy_1.sql&
③) mysql_convert_table_format命令修改
InonoDB引擎与myisam引擎
差别比较小,只有server_id差别
key_buffer_size大小的
在生产环境中如何选用MySQL的引擎?
在一般的既有读又有写的业务中,建议使用Innodb引擎,一句话,尽可能多的使用innodb引擎