mysql 存储引擎MYSIAM和INNODB特性比较

本文详细比较了MySQL中MyISAM与InnoDB存储引擎的特性,包括事务支持、锁机制、高并发处理、数据恢复及备份策略。MyISAM强调性能,适合大量SELECT和INSERT操作,而InnoDB支持事务,提供行级锁和多版本并发控制,更适合高并发场景。
摘要由CSDN通过智能技术生成

事物:MYISAM不支持事物,MyISAM类型的表强调的是性能,其执行数度比InnoDB

类型更快。如果不考虑事物,大量的select和insert适合MYISAM表

锁:MYISAM支持表锁
    INNODB提供行级锁,提供与 Oracle 类型一致的不加锁读取(non-locking read in),
   INNODB行锁也不是绝对的,在执行一个SQL语句时MySQL不能确定要扫描的范围,InnoDB表同样会锁全表,例如update table set num=1 where name like “%aaa%”

多版本高并发:多版本高并发即MVCC,INNODB才有MVCC支持高并发,实现四个标
准隔离级别,默认是可重复读,通过间隙锁防止幻读。间隙锁使得INNODB不仅仅
锁定涉及查询的行,还对索引中间隙进行锁定,防止幻行写入。

事务修复和崩溃修复:MYISAM可以手工或者自动的检查和修复操作,但不是崩溃
恢复。INNODB一定程度上支持崩溃时数据的丢失恢复,但不是绝对的恢复,且恢复时间长

备份:如果需要关闭服务器执行备份,备份策略可以忽略。但是需要在线热备份,INNODB是更好的选择


转换引擎上,有三种方式
1:alert table语句:  alert table mytable ENGINE=InnoDB;
此方法效率最低,需要把数据复制到一张新表,系统IO能力可能被耗尽,同时在原表加锁,需要避开表使用高峰期,同时会造成原引擎特性丢失,索引,外键等

2:导入导出
通过mysqldump工具可以导出到文件。但是会默认在在create table加drop table语句,不注意会造成数据丢失

2:创建查询
先创建一个新储存引擎的表,通过insert ---select导入,这种方式在数据量级别低的情况下是不错的选择,如果数据量过大,可以通过分批处理。完成后,新表是对旧表的复制,但旧表还存在。也可以在负责过程中对原表加锁,确保与原表数据一致。

转载于:https://www.cnblogs.com/supertang/p/4117959.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值