MySQL数据库-存储引擎

博客介绍了MySQL的MyISAM和InnoDB两种引擎的特点。MyISAM不支持事务、表级锁定等,读取快;InnoDB支持事务、行级锁定等,对硬件要求高。还给出生产环境中批量更改MySQL引擎的三种方法,包括用MySQL命令、sed命令和mysql_convert_table_format命令。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

MyISAM引擎
  • 特点
    1.不支持事务
    2.表级锁定:更新时锁整个表
    3.读写互相阻塞:不仅会在写入的时候阻塞读取,还会在读取的时候阻塞写入,但读本身并不会阻塞另外的读
    4.只会缓存索引:通过key_buffer_size 缓存索引,大大提高访问性能较少磁盘IO,但缓存区只会缓存索引,而不会缓存数据
    5.读取速度较快,占用资源相对少
    6.不支持外键约束,但支持全文索引
    7.MySQL5.5.5前缺省的存储引擎
InnoDB引擎
  • 特点
    1.支持事务:支持4个事务隔离级别,支持多版本读
    2.行级锁定:通过索引实现,全表扫描仍然会是表锁
    3.读写阻塞与事务隔离级别相关
    4.具有非常高效的缓存特性:能缓存索引,也能缓存数据
    5.整个表和主键以cluster方式存储,组成一棵平衡树
    6.所有Secondary Index都会保存主键信息
    7.支持分区,表空间
    8.支持外键约束
    9.和MyISAM比:InnoDB对硬件资源要求比较高
生产环境中如何批量更改MySQL引擎
  • 法1:MySQL命令语句修改

    ALTER TABLE 表名 ENGINE= INNODB;
    ALTER TABLE 表名 ENGINE= MyISAM;
    
  • 法2:使用sed命令对备份内容进行引擎转换

    mysqldump > bak1.sql
    nohup sed -e 's/MyISAM/InnoDB/g' bak2.sql > bak2.sql &
    mysql < bak1.sql 
    
  • 法3:mysql_convert_table_format命令修改

    mysql_convert_table_format --u=用户名 --p=密码 -e --engine=改成的存储引擎  库名 表名
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值