栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

高性能MySQL第三版笔记

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

高性能MySQL第三版笔记

高性能MySQL第三版笔记

第1章 MySQL架构与历史

1.1 MySQL逻辑架构1.2 并发控制1.3 事务1.4 多版本并发控制1.5 MySQL的存储引擎 第3章 服务器性能剖析

3.1 性能优化简介 第4章 Schema与数据类型优化4.3 范式和反范式第5章 创建高性能的索引

5.1 索引基础5.2 索引的优点

第1章 MySQL架构与历史 1.1 MySQL逻辑架构

1.1 MySQL逻辑架构


1.2 并发控制

1.2.1 读写锁

读共享,写互斥,写者优先读者

1.2.2 锁粒度

尽量只锁定需要修改的数据,而不是所有的数据。锁定的数据量越少,则系统的并发程度越高。

但是加锁也需要消耗资源。锁的操作,包括获取锁,检查锁是否已经解除,释放锁等,都会增加系统的开销。

所谓的锁策略,就是在锁的开销和数据的安全性之间寻求平衡,两种最重要的锁策略:表锁的行级锁。

表锁:

行级锁:

1.3 事务

事务是一组原子性的SQL查询,或者说一个独立的工作单元。
如果数据库引擎能偶成功地对数据库应用该组查询的全部语句,那么就执行该组查询。如果其中有任何一条语句因为崩溃或其他原因无法执行,那么所有的语句都不会执行。

事务ACID特性:原子性,一致性,隔离性,持久性。

1.3.1 隔离级别


1.3.2 死锁



1.3.3 事务日志


1.3.4 MySQL中的事务

MySQL默认采用自动提交(AUTOCOMMIT)模式。也就是说,如果不是显式地开启一个事务,则每个查询都被当做一个事务执行提交操作。

1.4 多版本并发控制





MVCC只在可重复读和提交读这两个隔离级别下工作。

1.5 MySQL的存储引擎

第3章 服务器性能剖析 3.1 性能优化简介

将性能定义为完成某件任务所需要的时间度量,换句话说,性能即响应时间。

性能优化就是在一定的工作负载下尽可能地降低响应时间。

第4章 Schema与数据类型优化 4.3 范式和反范式

范式的优点:

第5章 创建高性能的索引

索引是存储引擎用于快速找到记录的一种数据结构。

索引对于良好的性能非常关键。尤其是当表中的数据量越来越大时,索引对性能的影响愈发重要。

索引优化应该是对查询性能优化最有效的手段了。索引能够轻易将查询性能提高几个数量级。

5.1 索引基础

5.1.1 索引的类型

索引有很多种类型。索引是在存储引擎层而不是服务器层实现的。

B-Tree索引

实际上很多存储引擎包括InnoDB引擎使用的是B+Tree,即每一个叶子节点都包含指向下一个叶子节点的指针,从而方便叶子节点的范围遍历。

基于B+Tree的索引结构:

B-Tree索引能够加快访问数据的速度,因为存储引擎不再需要进行全表扫描来获取需要的数据,取而代之的是从索引的根节点开始进行搜索。根节点的槽中存放了指向子节点的指针,存储引擎根据这些指针指向下层查找。通过比较节点页的值和要查找的值可以找到合适的指针进入下层子节点,这些指针实际上定义了子节点页中值的上限和下限。最终存储引擎要么是找到对应的值,要么该记录不存在。

叶子节点比较特别,它们的指针指向的是被索引的数据,而不是其他的节点页。

哈希索引:

InnoDB并不显示支持哈希索引,InnoDB会自适应创建哈希索引,不会受用户控制。


Memory引擎显式支持哈希索引。

下面来看一个例子,假设有如下表:




全文索引:

5.2 索引的优点
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/713186.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号