auto commit

This commit is contained in:
CyC2018
2018-06-12 11:02:23 +08:00
parent e027c81f04
commit fb619c7a20
3 changed files with 91 additions and 90 deletions

View File

@ -32,13 +32,13 @@
InnoDB 是 MySQL 默认的事务型存储引擎,只有在需要 InnoDB 不支持的特性时,才考虑使用其它存储引擎。
采用 MVCC 来支持高并发并且实现了四个标准的隔离级别默认级别是可重复读REPEATABLE READ并且通过间隙锁next-key locking策略防止幻读的出现。间隙锁使得 InnoDB 不仅仅锁定查询涉及的行,还会对索引中的间隙进行锁定,以防止幻影行的插入。
采用 MVCC 来支持高并发并且实现了四个标准的隔离级别默认级别是可重复读REPEATABLE READ并且通过间隙锁next-key locking策略防止幻读。间隙锁使得 InnoDB 不仅仅锁定查询涉及的行,还会对索引中的间隙进行锁定,以防止幻影行的插入。
表是基于聚簇索引建立的,它对主键的查询性能有很大的提升。
内部做了很多优化,包括从磁盘读取数据时采用的可预测性读、能够自动在内存中创建哈希索引以加速读操作的自适应哈希索引、能够加速插入操作的插入缓冲区等。
通过一些机制和工具支持真正的热备份。其它存储引擎不支持热备份,要获取一致性视图需要停止对所有表的写入,而在读写混合场景中,停止写入可能也意味着停止读取。
通过一些机制和工具支持真正的在线热备份。其它存储引擎不支持在线热备份,要获取一致性视图需要停止对所有表的写入,而在读写混合场景中,停止写入可能也意味着停止读取。
## MyISAM
@ -56,14 +56,16 @@ MyISAM 设计简单,数据以紧密格式存储。对于只读数据,或者
## 比较
- 事务InnoDB 是事务型的。
- 事务InnoDB 是事务型的,可以使用 Commit 和 Rollback 语句
- 并发MyISAM 只支持表级锁,而 InnoDB 还支持行级锁。
- 外键InnoDB 支持外键。
- 备份InnoDB 支持在线热备份。
- 崩溃恢复MyISAM 崩溃后发生损坏的概率比 InnoDB 高很多,而且恢复的速度也更慢。
- 并发MyISAM 只支持表级锁,而 InnoDB 还支持行级锁。
- 其它特性MyISAM 支持压缩表和空间数据索引。
# 二、数据类型
@ -168,7 +170,7 @@ B+Tree 相比于 B-Tree 更适合外存索引,因为 B+Tree 内节点去掉了
为了减少磁盘 I/O磁盘往往不是严格按需读取而是每次都会预读。这样做的理论依据是计算机科学中著名的局部性原理当一个数据被用到时其附近的数据也通常会马上被使用。预读过程中磁盘进行顺序读取顺序读取不需要进行磁盘寻道并且只需要很短的旋转时间因此速度会非常快。
操作系统一般将内存和磁盘分割成固态大小的块,每一块称为一页,内存与磁盘以页为单位交换数据。数据库系统将索引的一个节点的大小设置为页的大小,使得一次 I/O 就能完全载入一个节点,并且可以利用预读特性,临近的节点也能够被预先载入。
操作系统一般将内存和磁盘分割成固态大小的块,每一块称为一页,内存与磁盘以页为单位交换数据。数据库系统将索引的一个节点的大小设置为页的大小,使得一次 I/O 就能完全载入一个节点,并且可以利用预读特性,相邻的节点也能够被预先载入。
更多内容请参考:[MySQL 索引背后的数据结构及算法原理](http://blog.codinglabs.org/articles/theory-of-mysql-index.html)
@ -211,13 +213,13 @@ MyISAM 存储引擎支持空间数据索引,可以用于地理数据存储。
### 4. 全文索引
MyISAM 存储引擎支持全文索引,用于查找文本中的关键词,而不是直接比是否相等。查找条件使用 MATCH AGAINST而不是普通的 WHERE。
MyISAM 存储引擎支持全文索引,用于查找文本中的关键词,而不是直接比是否相等。查找条件使用 MATCH AGAINST而不是普通的 WHERE。
InnoDB 存储引擎在 MySQL 5.6.4 版本中也开始支持全文索引。
## 索引的优点
- 大大减少了服务器需要扫描的数据量;
- 大大减少了服务器需要扫描的数据行数。
- 帮助服务器避免进行排序和创建临时表B+Tree 索引是有序的,可以用来做 ORDER BY 和 GROUP BY 操作);
@ -291,7 +293,7 @@ customer_id_selectivity: 0.0373
**优点**
- 可以把相关数据保存在一起,减少 I/O 操作。例如电子邮件表可以根据用户 ID 来聚集数据,这样只需要从磁盘读取少数的数据也就能获取某个用户的全部邮件,如果没有使用聚簇索引,则每封邮件都可能导致一次磁盘 I/O。
- 可以把相关数据保存在一起,减少 I/O 操作。例如电子邮件表可以根据用户 ID 来聚集数据,这样只需要从磁盘读取少数的数据也就能获取某个用户的全部邮件,如果没有使用聚簇索引,则每封邮件都可能导致一次磁盘 I/O。
- 数据访问更快。
**缺点**
@ -306,7 +308,7 @@ customer_id_selectivity: 0.0373
## 使用 Explain 进行分析
Explain 用来分析 SELECT 查询语句,开发人员可以通过分析结果来优化查询语句。
Explain 用来分析 SELECT 查询语句,开发人员可以通过分析 Explain 结果来优化查询语句。
比较重要的字段有:
@ -405,7 +407,7 @@ SELECT * FROM post WHERE post.id IN (123,456,567,9098,8904);
### 1. 事务问题
使用分布式事务。
使用分布式事务,比如 XA 接口
### 2. JOIN