
MySQL
MySQL
siriusol
这个作者很懒,什么都没留下…
展开
-
MySQL change buffer
当需要更新一个数据页时,如果数据页在内存中就直接更新,而如果这个数据页还没有在内存中的话,在不影响数据一致性的前提下,InooDB 会将这些更新操作缓存在 change buffer 中,这样就不需要从磁盘中读入这个数据页了。在下次查询需要访问这个数据页的时候,将数据页读入内存,然后执行 change buffer 中与这个页有关的操作。通过这种方式就能保证这个数据逻辑的正确性。需要说明的是,虽然名字叫作 change buffer,实际上它是可以持久化的数据。也就是说,change buffer 在内存原创 2020-06-01 19:16:07 · 205 阅读 · 0 评论 -
MySQL 锁
MyISAM 和 InnoDB 存储引擎使用的锁:MyISAM 采用表级锁(table-level locking)。InnoDB 支持行级锁(row-level locking)和表级锁,默认为行级锁。表级锁和行级锁对比:表级锁: MySQL中锁定 粒度最大 的一种锁,对当前操作的整张表加锁,实现简单,资源消耗也比较少,加锁快,不会出现死锁。其锁定粒度最大,触发锁冲突的概率最高,并发度最低,MyISAM和 InnoDB引擎都支持表级锁。行级锁: MySQL中锁定 粒度最小 的一种锁,只针对原创 2020-06-01 19:09:55 · 183 阅读 · 0 评论 -
MySQL 事务隔离级别
并发事务带来的问题在典型的应用程序中,多个事务并发运行,经常会操作相同的数据来完成各自的任务(多个用户对同一数据进行操作)。并发虽然是必须的,但可能会导致以下的问题。脏读(Dirty read): 当一个事务正在访问数据并且对数据进行了修改,而这种修改还没有提交到数据库中,这时另外一个事务也访问了这个数据,然后使用了这个数据。因为这个数据是还没有提交的数据,那么另外一个事务读到的这个数据是“脏数据”,依据“脏数据”所做的操作可能是不正确的。丢失修改(Lost to modify): 指在一个事务读取原创 2020-06-01 19:06:07 · 139 阅读 · 0 评论 -
MySQL 事务
事务是逻辑上的一组操作,要么都执行,要么都不执行。四大特性原子性(Atomicity): 事务是最小的执行单位,不允许分割。事务的原子性确保动作要么全部完成,要么完全不起作用;一致性(Consistency): 执行事务前后,数据保持一致,多个事务对同一个数据读取的结果是相同的;隔离性(Isolation): 并发访问数据库时,一个用户的事务不被其他事务所干扰,各并发事务之间数据库是独立的;持久性(Durability): 一个事务被提交之后。它对数据库中数据的改变是持久的,即使数据库发生故障也原创 2020-06-01 19:03:08 · 150 阅读 · 0 评论 -
MySQL 数据类型
参考链接:https://www.cnblogs.com/wlzjdm/p/6953398.htmlhttps://www.cnblogs.com/alterem/p/12001817.html日期类型MySql 中关于日期的类型有 Date / Datetime / Timestamp 三种类型。日期赋值时,允许“不严格”语法:任何标点符都可以用做日期部分或时间部分之间的间割符。例如...原创 2020-04-06 19:43:18 · 586 阅读 · 0 评论 -
MySQL 索引
MySQL 索引使用的数据结构主要有 BTree索引 和 哈希索引 。对于哈希索引来说,底层的数据结构就是哈希表,因此在绝大多数需求为单条记录查询的时候,可以选择哈希索引,查询性能最快;其余大部分场景,建议选择BTree索引。MySQL 的 BTree 索引使用的是 B 树中的 B+Tree。InnoDB 索引模型在 InnoDB 中,表都是根据主键顺序以索引的形式存放的,这种存储方式的表称...原创 2020-03-26 20:50:34 · 135 阅读 · 0 评论 -
MySQL 日志
更新涉及两个重要的日志模块:**redo log(重做日志)**和 binlog(归档日志)。MySQL 里经常说到的 WAL 技术,WAL 的全称是 Write-Ahead Logging,它的关键点就是先写日志,再写磁盘。具体来说,当有一条记录需要更新的时候,InnoDB 引擎就会先把记录写到 redo log 里面,并更新内存,这个时候更新就算完成了。同时,InnoDB 引擎会在适当的时候...原创 2020-03-22 23:08:51 · 167 阅读 · 0 评论 -
MySQL 基本架构
下图是 MySQL 的基本架构示意图,从中你可以清楚地看到 SQL 语句在 MySQL 的各个功能模块中的执行过程。MySQL 可以分为 Server 层和存储引擎层两部分。Server 层包括连接器、查询缓存、分析器、优化器、执行器等,涵盖 MySQL 的大多数核心服务功能,以及所有的内置函数(如日期、时间、数学和加密函数等),所有跨存储引擎的功能都在这一层实现,比如存储过程、触发器、视图...原创 2020-03-21 11:50:51 · 1714 阅读 · 0 评论 -
MySQL 存储引擎
InnoDB 与 MyISAM 的区别MyISAM是MySQL的默认数据库引擎(5.5版之前)。虽然性能极佳,而且提供了大量的特性,包括全文索引、压缩、空间函数等,但MyISAM不支持事务和行级锁,而且最大的缺陷就是崩溃后无法安全恢复。不过,5.5版本之后,MySQL 引入了 InnoDB(事务性数据库引擎),MySQL 5.5 版本后默认的存储引擎为 InnoDB。是否支持行级锁 : MyISAM 只有表级锁(table-level locking),而 InnoDB 支持行级锁 (row-leve原创 2020-05-31 18:59:39 · 230 阅读 · 0 评论