高性能MySQL阅读笔记

一:MySQL架构与历史

MySQL最重要,最与众不同的特性是它的存储引擎架构,这种架构的设计将查询处理及其他系统任务和数据的存储/提取相分离。

1.1:MySQL逻辑架构

在这里插入图片描述
在这里插入图片描述

优化与执行

MySQL会解析查询,并创建内部数据结构(解析树),然后对其进行各种优化,包括重写查询,决定表的读取顺序,以及选择合适的索引等。

优化器并不关心表使用什么存储引擎,但存储引擎对于优化查询是有影响的

1.2:并发控制

1:读写锁

在这里插入图片描述
在这里插入图片描述

2:锁粒度

在这里插入图片描述

问题是加锁也需要消耗资源。锁的各种操作,都会增加系统的开销。吴国花费大量的时间来管理锁,而不是存取数据,那么系统的性能会收到影响

在这里插入图片描述
mysql提供了多种选择,每种mysql存储引擎都可以实现自己的锁策略和锁粒度

3:表锁

在这里插入图片描述

4:行锁

在这里插入图片描述

1.3:事务

在这里插入图片描述

ACID
原子性,一致性,隔离性,持久性

在这里插入图片描述

隔离级别

在这里插入图片描述
在这里插入图片描述

事务日志

在这里插入图片描述

MySQL中的事务

在这里插入图片描述
在这里插入图片描述

隐式和显示锁定

在这里插入图片描述
在这里插入图片描述

1.4:多版本并发控制

在这里插入图片描述
在这里插入图片描述

二:schema与数据类型优化

良好的逻辑设计和物理设计是高性能的基石,应该根据系统要执行的查询语句来设计schema,这往往需要权衡各种因素。

例如反范式的设计 和计数表,汇总表的添加。

1:选择优化的数据类型

几个简单的原则:

  • 更小的通常更好

一般情况下,尽可能的选择可以正确存储数据的最小数据类型。更小的数据类型通常更快,因为它们占用更少的磁盘,内存和CPU缓存,并且处理时需要的CPU周期也更少。但是要确保没有低估需要存储的值的范围

  • 简单就好

简单的数据类型的操作通常需要更少的CPU周期

  • 尽量避免NULL

列属性可为NULL是一个默认的属性,但是最好指定列NOT NULL,除非真的需要存储NULL值,因为包含NULL的列,在查询中对于MySQL来说更难优化,因为可为NULL的列使得索引,索引统计和值比较都更复杂。
在这里插入图片描述

1.1:整数类型

有两种类型的数字:整数实数。整数是其中之一

整数的数据类型:

  • TINYINT 8位
  • SMALLINT 16位
  • MEDIUMINT 24位
  • INT 32位
  • BIGINT 62位

它们可以存储的值的范围是-2(n-1)到2(n-)-1,其中n是存储空间的位数.

可选用的属性:UNSIGNED。表示不允许有负值,这可以使得正数的上限提高一倍。

1.2:实数类型

实数是带有小数部分的数字。

float和double类型支持使用标准(原生)的浮点近似计算。

decimal类型用于存储精确的小数

由于CPU不支持对DECIMAL的直接计算,所以MySQL5.0后,MySQL服务器自己实现了DECIMAL的高精度计算。相对而言,CPU直接支持的原生浮点计算更快一些。

指定精度:decimal(18,9)表示一共18位数字,小数点后9位。

1.3:字符串类型

在innodb中

varchar:
存储可变长字符串,比定长类型更节省空间。varchar需要使用1或者2个额外的字节记录字符串的长度:如果列的最大长度小于等于255字节,则只用一个字节表示,否则使用两个字节表示。
在这里插入图片描述
在这里插入图片描述

char:
在这里插入图片描述
在这里插入图片描述

BLOB与TEXT
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

1.4:枚举

枚举:

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

1.5:日期和时间类型

日期和时间类型
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

三:创建高新能的索引

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

1:索引基础

在MySQL中,存储引擎在使用索引查询时,先根据索引找到对应值,然后根据匹配的索引记录找到对应的数据和。
在这里插入图片描述

1.1:索引的类型

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值