
MySQL
文章平均质量分 96
MySQL
fedorafrog
这个作者很懒,什么都没留下…
展开
-
MySQL千万级大表优化
千万级大表如何优化,这是一个很有技术含量的问题,通常我们直觉思维都会 跳转到拆分或者数据分区。在此我想做一些补充和梳理,想和大家做一下这方面的经验总结和交流。以下是分析大纲内容。既然要吃透这个问题,我们势必要回到本源,我把这个问题分为三部分:“千万级”、“大表”、“优化”,也分别对应我们在图中的标识:“数据量”、“对象”、“目标”1. 数据量:千万级千万级只是一个感官数字,就是我们印象中的大数据量。这里我们需要把这个概念细化,因为随着业务和时间的变化,数据量也会有变化,我们应该是转载 2020-07-14 21:48:32 · 608 阅读 · 0 评论 -
MySQL大数据量分页查询优化方法
1. limit分页的原理先来看一下分页的基本原理mysql explain SELECT * FROM message ORDER BY id DESC LIMIT 10000, 20***************** 1. row **************id: 1select_type: SIMPLEtable: messagetype: indexpossible_keys: NULLkey: PRIMARYkey_len: 4ref: NULLrows: 1002转载 2020-07-14 10:10:02 · 1316 阅读 · 0 评论 -
Druid数据库连接池引起的FullGC问题排查、分析、解决
问题现象在某个工作日,突然收到线上的服务告警,有大量的请求延时产生,查看线上服务发现基本上都是获取数据库连接超时,而且影响时间只有3~4秒钟,服务又恢复了正常。隔了几分钟之后,又出现了大量的告警,还是影响3~4秒后又恢复正常。 由于我们是底层服务,被重多的上层服务所依赖,这么频繁的异常波动已经严重影响到了业务使用。开始排查问题排查过程DB的影响?当第一次告警产生时,第一反应是可能上层服务有大量的接口调用,并且涉及到一些复杂的SQL查询导致数据库连接数不够用,但是在分析了接口调用情况后发现异常转载 2020-06-29 10:55:41 · 3389 阅读 · 0 评论 -
MySQL七种日志介绍
进入正题前先简单看看MySQL的逻辑架构,相信我用的着。MySQL逻辑架构MySQL的逻辑架构大致可以分为三层: 第一层:处理客户端连接、授权认证,安全校验等。 第二层:服务器server层,负责对SQL解释、分析、优化、执行操作引擎等。 第三层:存储引擎,负责MySQL中数据的存储和提取。 我们要知道MySQL的服务器层是不管理事务的,事务是由存储引擎实现的,而MySQL中支持事务的存储引擎又属InnoDB使用的最为广泛,所以后续文中提到的存储引擎都以InnoDB转载 2021-01-18 10:04:55 · 9803 阅读 · 1 评论 -
MySQL的buffer pool缓冲池原理
应用系统分层架构,为了加速数据访问,会把最常访问的数据,放在缓存(cache)里,避免每次都去访问数据库。操作系统,会有缓冲池(buffer pool)机制,避免每次访问磁盘,以加速数据的访问。MySQL作为一个存储系统,同样具有缓冲池(buffer pool)机制,以避免每次查询数据都进行磁盘IO。今天,和大家聊一聊InnoDB的缓冲池。InnoDB的缓冲池缓存什么?有什么用?缓存表数据与索引数据,把磁盘上的数据加载到缓冲池,避免每次访问都进行磁盘IO,起到加速访问的作用。速度快,那为转载 2020-06-29 11:21:14 · 478 阅读 · 0 评论 -
MVCC多版本并发控制机制
1. 定义MVCC(Multi-Version Concurrency Control,多版本并发控制)一种并发控制机制,在数据库中用来控制并发执行的事务,控制事务隔离进行。2. 核心思想MVCC是通过保存数据在某个时间点的快照来进行控制的。使用MVCC就是允许同一个数据记录拥有多个不同的版本。然后在查询时通过添加相对应的约束条件,就可以获取用户想要的对应版本的数据。3. 基本数据...转载 2020-03-09 13:23:43 · 281 阅读 · 0 评论 -
MySQL事务实现原理
1. 开篇相信大家都用过事务以及了解他的特点,如原子性(Atomicity),一致性(Consistency),隔离型(Isolation)以及持久性(Durability)等。今天想跟大家一起研究下事务内部到底是怎么实现的,在讲解前我想先抛出个问题:事务想要做到什么效果?按我理解,无非是要做到可靠性以及并发处理。可靠性:数据库要保证当insert或update操作时抛异常或者数据库...转载 2020-03-09 13:00:56 · 340 阅读 · 1 评论 -
B-Tree和B+Tree区别
B+树索引是B+树在数据库中的一种实现,是最常见也是数据库中使用最为频繁的一种索引。B+树中的B代表平衡(balance),而不是二叉(binary),因为B+树是从最早的平衡二叉树演化而来的。在讲B+树之前必须先了解二叉查找树、平衡二叉树(AVLTree)和平衡多路查找树(B-Tree),B+树即由这些树逐步优化而来。1. 二叉查找树二叉树具有以下性质:左子树的键值小于根的键值,右子树的...转载 2020-02-20 10:31:51 · 2359 阅读 · 1 评论 -
MySQL加锁处理分析--何登成
1. 背景MySQL/InnoDB的加锁分析,一直是一个比较困难的话题。我在工作过程中,经常会有同事咨询这方面的问题。同时,微博上也经常会收到MySQL锁相关的私信,让我帮助解决一些死锁的问题。本文,准备就MySQL/InnoDB的加锁问题,展开较为深入的分析与讨论,主要是介绍一种思路,运用此思路,拿到任何一条SQL语句,都能完整的分析出这条语句会加什么锁?会有什么样的使用风险?甚至是分析线上...转载 2020-02-10 15:31:10 · 2394 阅读 · 3 评论 -
MySQL索引策略及优化
MySQL的优化主要分为结构优化(Scheme optimization)和查询优化(Query optimization)。本章讨论的高性能索引策略主要属于结构优化范畴。本章的内容完全基于上文的理论基础,实际上一旦理解了索引背后的机制,那么选择高性能的策略就变成了纯粹的推理,并且可以理解这些策略背后的逻辑。1. 示例数据库为了讨论索引策略,需要一个数据量不算小的数据库作为示例。本文选用M...转载 2020-02-10 15:12:46 · 218 阅读 · 0 评论 -
MySQL索引原理及BTree结构详解
1. 索引的本质MySQL官方对索引的定义为:索引(Index)是帮助MySQL高效获取数据的数据结构。提取句子主干,就可以得到索引的本质:索引是数据结构。我们知道,数据库查询是数据库的最主要功能之一。我们都希望查询数据的速度能尽可能的快,因此数据库系统的设计者会从查询算法的角度进行优化。最基本的查询算法当然是顺序查找(linear search),这种复杂度为O(n)的算法在数据量很大时...转载 2020-02-10 14:19:43 · 2415 阅读 · 0 评论