前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >高性能MySQL之架构与历史

高性能MySQL之架构与历史

作者头像
Clive
发布2019-03-08 10:43:39
4480
发布2019-03-08 10:43:39
举报

MySQL逻辑架构

MySQL逻辑架构.png

优化与执行

  • MySQL会解析查询,创建内部数据结构(解析树),对齐进行优化(重写查询、决定表的读取顺序、选择合适的索引);
  • 使用explain,可以解释优化过程的各个因素,使用户知道服务器是如何进行优化决策的,并提供一个参考基准,便于重构查询和表、修改配置;
  • 优化器不关心表用的是什么存储引擎,但存储引擎对优化查询是有影响的;
  • 例:SELECT语句,解析查询之前,服务器先检查查询缓存(Query Cache),若找到对应的查询,服务器就不必再执行查询解析、优化和执行的整个过程,而直接返回查询缓存中的结果。

并发控制

  • 多个查询需要在同一时刻修改数据,即会产生并发控制的问题;
  • 并发控制有两个层面:服务器层、存储引擎层;
  • 读写锁:处理并发读写时,用共享锁/读锁(shared lock/read lock)和排他锁/写锁(exclusive lock/write lock)来进行并发控制;
  • 锁粒度:要提高共享资源的并发性,需尽量只锁定需要修改的部分数据,给定的资源,锁定的数据量越少,并发度就越高;加锁也消耗资源(锁的操作:获得锁、检查锁是否解除、释放锁);需要采取合适的锁策略(在锁的开销和数据的安全性之间制衡);
  • 表锁:开销最小的策略,对表插入/更新/删除,需要先获取写锁,阻塞其他读写操作,没有写锁的时候,其他读取操作才能获得读锁,读锁之间不互相阻塞;写锁比读锁优先级高,写锁可以插队到锁队列中读锁的前面;服务器会为ALTER TABLE之类的语句加表锁,而忽略了存储引擎的锁机制;
  • 行锁:开销最大的策略,最大程度支持并发处理。

事务

  • 事务是一组原子性的SQL查询,其中的语句要么全部执行成功,要么全部执行失败;
  • ACID特性:原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)、持久性(Durability);
  • 四种隔离级别:未提交读(Read Uncommitted)、提交读(Read Committed)、可重复读(Repeatable Read)、可串行化(Serializable)

隔离级别

脏读可能性

不可重复读可能性

幻读可能性

加锁读

Read Uncommitted

Yes

Yes

Yes

No

Read Committed

No

Yes

Yes

No

Repeatable Read

No

No

Yes

No

Serializable

No

No

No

Yes

  • 死锁:两个或多个事务在同一资源上相互占用,并请求锁定对方的资源,导致恶行循环
  • 死锁的处理:死锁会造成非常慢的查询,InnoDB处理死锁的方法是,将持有最少行级排他锁的事务进行回滚
  • 死锁的原因:锁的行为和顺序和存储引擎相关,以同样顺序执行语句,有些存储引擎会死锁,有些不会;死锁产生原因有两个,真正的数据冲突、存储引擎的实现方式。
  • MySQL中的事务:自动提交(AUTOCOMMIT)默认开启,不是显示地开始一个事务,则每个查询都当作一个事务执行提交操作;数据定义语言(DDL)中,若是会导致大量数据改变的操作,如ALTER TABLE、LOCK TABLES,会在执行前强制执行COMMIT提交当前的活动事务;
  • MYSQL服务器不管理事务,事务是由下层的存储引擎实现的,在同一个事务中,使用多种存储引擎是不可靠的,因为非事务型的表上的变更无法撤销;
  • InnoDB可以进行显示锁定:SELECT ... LOCK IN SHARE MODE;SELECT ... FOR UPDATE。
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019.02.25 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • MySQL逻辑架构
  • 优化与执行
  • 并发控制
  • 事务
相关产品与服务
对象存储
对象存储(Cloud Object Storage,COS)是由腾讯云推出的无目录层次结构、无数据格式限制,可容纳海量数据且支持 HTTP/HTTPS 协议访问的分布式存储服务。腾讯云 COS 的存储桶空间无容量上限,无需分区管理,适用于 CDN 数据分发、数据万象处理或大数据计算与分析的数据湖等多种场景。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档