- 事务的特性
- 原子性 a
- 一致性 c
- 隔离性 i
- 持久性 d
- 隔离级别
- read uncommited 未提交读-脏读-少用
- read commited 提交读-其他sql默认-不可重复读-两次执行查询的结果可能不同
- repeatable read 可重复读-mysql默认-幻读(MVCC解决)-多次读取结果相同
- serializable 可串行化-最高的隔离级别-避免幻读-加行锁-造成争锁问题-少用
-
死锁
image.png
mysql解决:将持有最少行级排它锁的事务进行回滚
- 多版本并发控制(MVCC)
-
存储引擎的选择:
除非需要用到innodb不支持的特性,并且没有其他办法可以代替,否则都使用innodb。- 如果需要全文索引,则优先考虑innodb+sphinx的组合,而不是使用支持全文索引的myisam。
- 如果不在乎扩展能力,并发,也不在乎崩溃后的数据丢失问题,却对innodb的空间占用比较敏感,这种场景下使用myisam比较合适。
- 除非万不得已,否则不建议使用混合存储引擎,可能有一些问题,比如事务。
- 如果需要事务,那么选择innodb是最稳定的选择,如果不需要事务,并且主要是select和insert操作,那么myisam是不错的选择,一般日志型的应用比较符合这一特性。
- 备份,如果可以定期的关闭服务来执行备份,那么备份的因素可以忽略,但是如果需要在线热备份,那么选择innodb就是基本的要求。
- 崩溃恢复,相对而言,myisam崩毁后发生损坏的概率比InnDB高得多,而且恢复速度也较慢,因此,即使很多人不需要事务,也会选择InnoDB。
高性能Mysql(第一章)
最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
推荐阅读更多精彩内容
- 《高性能MySQL》&《MySQL技术内幕 InnoDB存储引擎》笔记 第一章 MySQL架构与历史 MySQL的...
- 从我的个人博客访问 MySQL的特性是它的存储引擎架构。 这种设计将查询处理(Query Processing)及...
- MySQL技术内幕:InnoDB存储引擎(第2版) 姜承尧 第1章 MySQL体系结构和存储引擎 >> 在上述例子...
- 三层逻辑架构 第一层是连接/线程处理。比如连接处理、授权认证、安全等等。 第二层是核心服务层。包括查询解析、分析、...