随笔分类 - MySQL / Innodb存储引擎
摘要:InnoDB存储引擎中的锁 概要 人们认为行级锁总会增加开销。实际上,只有当实现本身会增加开销时,行级锁才会增加开销。InnoDB存储引擎不需要锁升级,因为一个锁和多个锁的开销是相同的。 一、什么是锁 ? 锁是数据库系统区别于文件系统的一个关键特性。锁机制用于管理对共享资源的并发访问。 二、锁类型
阅读全文
摘要:MySQL中的MVCC实现机制 一、什么是MVCC? MVCC (Multiversion Concurrency Control) 中文全称叫多版本并发控制,是现代数据库(包括 MySQL、Oracle、PostgreSQL 等)引擎实现中常用的处理读写冲突的手段,目的在于提高数据库高并发场景下的
阅读全文
摘要:MySQL事务日志 一、什么是MySQL事务? MySQL事务(Transaction)用于保证数据的一致性,事务是在数据库管理系统中执行的一个逻辑操作单元,它是由一组数据库操作组成的逻辑工作单元。 这一组操作要么全部成功,要么全部失败,不存在部分成功部分失败的情况,所有的操作共进退,因此事务是一个
阅读全文
摘要:InnoDB支持的事务隔离级别 令人惊讶的是,大部分数据库系统都没有提供真正的隔离性,最初或许是因为系统实现者并没有真正理解这些问题。如今这些问题已经弄清楚了,但是数据库实现者在正确性和性能之间做了妥协。ISO和ANIS SQL 标准指定了四种事务隔离级别的标准,但是很少有数据库厂商遵循这些标准。比
阅读全文
摘要:MySQL索引进阶-聚簇索引和二级索引 索引分类 Mysql中索引主要分为以下几类: 1)数据结构 分为B+树索引、hash索引、FULLTEXT索引、R-Tree索引 2)逻辑角度 分为主键索引(PRIMARY KEY),唯一索引(UNIQUE),普通索引(INDEX),组合索引(INDEX),全
阅读全文
摘要:MySQL进阶-InnoDB数据页 一、页的概念 InnoDB 会把存储的数据划分为若干个「页」,以页作为磁盘和内存交互的基本单位,一个页的默认大小为 16KB。可以把页理解为一个容器,这个容器时用来存储记录的。 查看页的大小命令:show status like 'innodb_page_size
阅读全文
摘要:MySQL索引基础-explain 各参数含义以及作用 本文来梳理一下MySQL索引的基础知识以及explain各参数含义及作用 一、主键 在 InnoDB 存储引擎中,表都是根据主键顺序组织存放的,这种存储方式的表称为索引组织表,在InnoDB引擎表中,每张表都有个主键(Primary Key),
阅读全文
摘要:MySQL索引基础-索引的创建以及设计原则 一、MySQL索引基础 首先,我们将从索引基础开始介绍一下什么是索引,分析索引的几种类型,并探讨一下如何创建索引以及索引设计的基本原则。 为了测试索引,我们创建一个user表并插入几条数据,建立几个索引: 1 CREATE TABLE `user` ( 2
阅读全文
摘要:MySQL进阶-行格式 前言 最近打算深入地去理解MySQL底层的实现原理。比如常用的存储引擎InnoDB的行格式和数据结构。参考了很多资料,但是总感觉知识点是断断续续的。比如很多文章一开始就在讲InnoDB的行格式和数据页结构。我就一头雾水,就是不知道这些概念是怎么引出来的? 偶然发现一本宝藏书籍
阅读全文
摘要:Mysql的联(复)合索引 一、概念 两个或更多个列上的索引被称作联合索引,联合索引又叫复合索引。 对于复合索引:Mysql从左到右的使用索引中的字段,一个查询可以只使用索引中的一部份,但只能是最左侧部分。例如索引是key index (a,b,c)。可以支持a | a,b| a,b,c 3种组合进
阅读全文