MySQL
文章平均质量分 90
0xZzzz
目前就职于阿里,从事阿里新零售业务的相关开发工作,开源爱好者,喜欢阅读优秀开源框架的源码,热衷于研究各种技术,致力于成为一名有腔调的工程师
展开
-
MySQL主从同步原理
前言关于mysql主从同步,相信大家都不陌生,随着系统应用访问量逐渐增大,单台数据库读写访问压力也随之增大,当读写访问达到一定瓶颈时,将数据库的读写效率骤然下降,甚至不可用;为了解决此类问题,通常会采用mysql集群,当主库宕机后,集群会自动将一个从库升级为主库,继续对外提供服务;那么主库和从库之间的数据是如何同步的呢?正文为了减轻主库的压力,应该在系统应用层面做读写分离,写操作走主库,读操作走从库原创 2017-12-30 16:58:15 · 4490 阅读 · 1 评论 -
MySQL官方文档14.5.5.3 如何最小化和处理死锁
原文地址:https://dev.mysql.com/doc/refman/5.7/en/innodb-deadlocks-handling.html14.5.5.3如何最小化和处理死锁本节基于第14.5.5.2节“死锁检测和回滚”中有关死锁的概念信息。它解释了如何组织数据库操作以最大限度地减少死锁以及应用程序中所需的后续错误处理。死锁是事务数据库中的一个典型问题,但它们并不危险,除非...翻译 2018-06-10 16:00:46 · 561 阅读 · 0 评论 -
MySQL官方文档14.5.5.2 死锁检测和回滚
原文地址:https://dev.mysql.com/doc/refman/5.7/en/innodb-deadlock-detection.html14.5.5.2 死锁检测和回滚当启用死锁检测时(默认),InnoDB会自动检测事务死锁并回滚一个或多个事务来打破死锁。InnoDB会尝试选择小型事务进行回滚,其中事务的大小由插入,更新或删除的行数决定。如果innodb_table_lo...翻译 2018-06-08 19:35:45 · 2031 阅读 · 0 评论 -
MySQL官方文档14.5.5.1 InnoDB死锁示例
原文地址:https://dev.mysql.com/doc/refman/5.7/en/innodb-deadlock-example.html14.5.5.1 InnoDB死锁示例以下示例说明了锁请求如何发生错误会导致死锁时。这个例子涉及两个客户端,A和B。 首先,客户端A创建一个包含一行的表,然后开始一个事务。在事务中,A通过在共享模式下select来获得行上的S锁:mysql...翻译 2018-06-08 16:19:46 · 767 阅读 · 0 评论 -
MySQL官方文档14.5.2 InnoDB事务模型
原文地址:https://dev.mysql.com/doc/refman/5.7/en/innodb-transaction-model.html14.5.2InnoDB事务模型14.5.2.1 事务隔离级别 14.5.2.2 自动提交、提交和回滚 14.5.2.3 一致性非锁定读取 14.5.2.4 锁定读取在InnoDB事务模型中,目标是将多版本数据库的最佳属性与传统的两阶...翻译 2018-06-08 15:12:59 · 977 阅读 · 0 评论 -
MySQL官方文档14.5.2.2 自动提交、提交和回滚
原文地址:https://dev.mysql.com/doc/refman/5.7/en/innodb-autocommit-commit-rollback.html14.5.2.2自动提交、提交和回滚在InnoDB中,所有的用户活动都发生在一个事务中。如果启用自动提交模式,则每个SQL语句将自行形成单个事务。默认情况下,MySQL为启用自动提交的每个新连接启动会话,因此如果该语句没有...翻译 2018-06-08 09:44:00 · 828 阅读 · 0 评论 -
MySQL官方文档14.5.3 InnoDB中不同的SQL语句设置的锁
原文地址:https://dev.mysql.com/doc/refman/5.7/en/innodb-locks-set.html14.5.3 InnoDB中不同的SQL语句设置的锁锁定读取,UPDATE或DELETE通常会在处理SQL语句时扫描的每个索引记录上设置记录锁。在语句中WHERE条件是否将排除该行并不重要。InnoDB不记得确切的WHERE条件,但只知道扫描了哪些索引范围...翻译 2018-05-04 16:26:20 · 1470 阅读 · 0 评论 -
MySQL官方文档14.5.2.4 锁定读取
原文地址:https://dev.mysql.com/doc/refman/5.7/en/innodb-locking-reads.html14.5.2.4 锁定读取如果您查询数据,然后在同一事务中插入或更新相关数据,则常规SELECT语句不会提供足够的保护。其他事务可以更新或删除刚才查询的相同行。InnoDB支持两种类型的锁定读取,提供额外的安全性:SELECT … LOCK ...翻译 2018-05-03 21:06:44 · 1458 阅读 · 0 评论 -
MySQL官方文档14.5.2.3 一致性非锁定读取
14.5.2.3 一致性非锁定读取一致性读取意味着InnoDB使用多版本化在某个时间点向查询呈现数据库的快照。该查询可以查看在该时间点之前提交的事务所做的更改,并且没有被后来的或未提交的事务修改。此规则的异常是该查询查看同一事务中较早的语句所做的更改。此异常会导致以下异常:如果您更新表中的某些行,则SELECT会看到更新行的最新版本,但它也可能会看到任何行的旧版本。如果其他会话同时更新同一个表翻译 2018-05-03 19:36:16 · 1646 阅读 · 0 评论 -
MySQL官方文档14.5.2.1 事务隔离级别
原文地址:https://dev.mysql.com/doc/refman/5.7/en/innodb-transaction-isolation-levels.html14.5.2.1事务隔离级别事务隔离是数据库处理的基础之一。隔离是首字母缩写ACID的I;隔离级别是在多个事务同时进行更改和执行查询时,对性能和可靠性之间的平衡,结果的一致性和再现性进行微调的设置。InnoDB提供了S...翻译 2018-03-21 09:54:01 · 694 阅读 · 0 评论 -
MySQL官方文档14.3 InnoDB多版本控制
原文地址:https://dev.mysql.com/doc/refman/5.7/en/innodb-multi-versioning.html14.3 InnoDB多版本控制InnoDB是一个多版本的存储引擎,它保存着有关行修改的旧版本信息,支持事务特性,例如并发和回滚,此信息存储在称为回滚段(oracle的一个类似的数据结构)的数据结构的表空间中,InnoDB使用回滚段中的信息来执行...翻译 2018-01-10 09:31:57 · 1346 阅读 · 0 评论 -
MySQL官方文档14.4.13 Redo Log重做日志
原文地址:https://dev.mysql.com/doc/refman/5.7/en/innodb-redo-log.html14.4.13 Redo Log14.4.13.1重做日志刷新的组提交 译文传送门重做日志是在崩溃恢复期间使用的基于磁盘的数据结构,用于纠正由不完整事务写入的数据。在正常操作期间,重做日志对请求进行编码,以更改由SQL语句或低级API调用产生的InnoD...翻译 2018-02-25 18:18:56 · 3939 阅读 · 0 评论 -
MySQL官方文档14.4.8 Undo Logs撤销日志
原文地址:https://dev.mysql.com/doc/refman/5.7/en/innodb-undo-logs.html14.4.8撤消日志撤销日志是与单个事务关联的撤消日志记录的集合,撤销日志记录包含有关如何撤消事务对聚簇索引记录的最新更改的信息,如果另一个事务需要查看原始数据(作为一致读取操作的一部分),则从撤消日志记录中检索未修改的数据,撤消日志存在于撤销日志段中,该日志...翻译 2018-01-11 15:17:10 · 904 阅读 · 0 评论 -
MySQL官方文档14.4.13.1 重做日志刷新的组提交
原文地址:https://dev.mysql.com/doc/refman/5.7/en/innodb-performance-group_commit.html14.4.13.1重做日志刷新的组提交与任何其他ACID兼容的数据库引擎一样,InnoDB在提交之前刷新事务的重做日志。InnoDB使用组提交功能将多个这样的刷新请求组合在一起,以避免每次提交刷新一次。通过组提交,InnoDB向日...翻译 2018-02-25 18:25:31 · 479 阅读 · 0 评论 -
MySQL官方文档14.8.2.2 InnoDB索引的物理结构
原文地址:https://dev.mysql.com/doc/refman/5.7/en/innodb-physical-structure.html14.8.2.2 InnoDB索引的物理结构除空间索引外,InnoDB索引是B树数据结构。空间索引使用R树,这是用于索引多维数据的专用数据结构。索引记录存储在B树或R树数据结构的叶节点的页中。索引页的默认大小是16KB。将新记录插入Inn...翻译 2018-03-09 14:26:50 · 508 阅读 · 0 评论 -
MySQL官方文档14.8.2.1 聚簇索引和二级索引
前言本篇文章为MySQL官方文档14.8.2.1节 — 聚簇索引和二级索引译文,纯平自己粗浅的英语功底和翻译软件进行翻译,如有问题,欢迎指正。14.8.2.1 聚簇索引和二级索引每个InnoDB表都有一个特殊的索引,称为聚簇索引,其中存储行的数据。 通常,聚簇索引与主键是同义的。为了从查询、插入和其他数据库操作中获得最佳性能,你必须了解InnoDB如何使用聚簇索引来优化每个表的最常见查找和DML操作翻译 2018-03-09 13:23:26 · 511 阅读 · 0 评论 -
MySQL官方文档14.5.1 InnoDB锁
原文地址:https://dev.mysql.com/doc/refman/5.7/en/innodb-locking.html14.5.1 InnoDB锁本节介绍InnoDB使用的锁类型。共享和独占锁意向锁记录锁间隙锁Next-Key 锁插入意向锁AUTO-INC锁空间索引谓词锁共享和独占锁InnoDB使用两种类型的锁,共享(S)锁和独占(X)锁实现标准...翻译 2018-03-10 16:53:02 · 599 阅读 · 0 评论 -
深度解析InnoDB多版本并发控制(MVCC)
前言MVCC应用于InnoDB的快照读,快照读意味着InnoDB使用多版本化在某个时间点向查询呈现数据库的快照。有关快照读的更多信息,详见MySQL官方文档14.5.2.3节 — 一致性非锁定读取译文。本文的分析都是针对InnoDB引擎和REPEATABLE_READ事务隔离级别。读者可以先看一下MySQL官方文档对多版本控制的介绍,方便于更好的理解本文,笔者对相关章节进行了翻译,详见...原创 2018-01-10 15:24:31 · 5491 阅读 · 0 评论 -
为什么InnoDB使用B+树作为索引数据结构
前言我们都知道,MySQL索引的数据结构是原创 2019-03-31 23:38:08 · 531 阅读 · 0 评论