这个专栏的内容是我工作以来看过讲MySQL最深入而且最细致的,作者奇是前阿里资深技术专家,和褚霸(霸爷)一起研究数据库7年之久,我觉得很有必要把这个专栏重新读一下并做好笔记,以求共勉。特别注意由于奇在数据库领域比较资深,所以很多知识他可能认为你至少应该是了解的,如果完全不了解某个知识点,建议先去网上找找资料,对知识点有个大致的轮廓。专栏地址:https://time.geekbang.org/
《沉淀》是云栖社区品牌栏目,在品味技术人百味人生的同时,也能够帮助你沉淀技术,获得点拨。工作中,如果有不错的大牛让你受益匪浅,也欢迎通过电子邮件(lose.zy@alibaba-inc.com)推荐采访,让更多人受益。我们的想法是:“如果你觉得某个技术挺棒的,不妨品味这些技术人背后的沉淀。” 奇认为,MySQL设计简单,非常适合初创公司使用 奇(真
转载 2023-12-18 13:13:36
100阅读
1.基础架构:一条sql查询语句是如何执行的?mysql> select * from T where ID=10;.基础架构:一条sql更新语句是如何执行的?mysql> update T set c=c+1 where ID=2; redo log(1)存储引擎的日志,InnoDB特有的;(2)物理日志(3)循环写,空间固定会用完;binlog (1)server端日志,
转载 2023-12-11 20:39:01
1115阅读
索引维护image.pngB+ 树为了维护索引有序性,在插入新值的时候需要做必要的维护。以上面这个图为例,如果插入新的行 ID 值为 700,则只需要在 R5 的记录后面插入一个新记录。如果新插入的 ID 值为 400,就相对麻烦了,需要逻辑上挪动后面的数据,空出位置。而更糟的情况是,如果 R5 所在的数据页已经满了,根据 B+ 树的算法,这时候需要申请一个新的数据页,然后挪动部分数据过去。这个过
        在深入MySQL之前, 不妨分析一下如下的sql语句是如何在MySQL执行的呢?        select * from t where id = 10         
转载 2024-01-14 10:55:46
78阅读
1
原创 2024-09-23 20:50:01
11阅读
前言人大金仓数据库作为国产数据库在政府单位中有着相当重要的地位。目前公司软件设计将需要支持人大金仓。提示:以下是本篇文章正文内容,下面案例可供参考一、人大金仓是什么? 人大金仓数据库管理系统KingbaseES 是北京人大金仓信息技术股份有限公司自主研制开发的具有自主知识产权的通用关系型数据库管理系统。 仓数据库主要面向事务处理类应用,兼顾各类数据分析类应用,可用做管理信息系统、业务及生产系统、
转载 2023-09-16 00:42:42
46阅读
06 | 全局锁和表锁:给表加个字段怎么有这么多阻碍全局锁:对整个数据库实例加读锁,命令是Flush tables with read lock,使用这个命令后其他线程的增删改、修改表结构、建表将会被阻塞(使用unlock tables可以解除)。主要用来做全局备份。为什么使用全局锁而不要使用全库只读(set global readonly = true):一方面是readonly通常会被用来做其
转载 2024-01-14 21:06:16
103阅读
http://mysql.taobao.org/monthly/2024/05/02/ 推荐下这篇文章里面optimizer_trace的说明很详细第一单元我们主要是用到了join_execution 部分,其他部分的可以参考这篇。explain analyze 讲得比较少,加上我们单元内容,刚好互补~
原创 2024-08-28 09:22:38
2阅读
04 | 深入浅出索引(上)B+树特点:1、非叶子结点不保存数据,只用于索引,所有数据保存在叶子结点。2、叶子结点之间使用指针相连,并且按照从小到大的顺序排列。3、子结点元素中的最大值或是最小值出现在父结点的元素中。哈希索引:以键值对的结构存储数据,只要输入键就可以找到对应的值,通过key计算出它要存储的位置,但可能会发生碰撞,就是不同的key落到同一个位置上了,这就形成了链表,是不是就是Hash
转载 2023-11-27 07:09:53
67阅读
01 | 基础架构:一条SQL查询语句是如何执行的?MySQL架构图左侧图是奇老师原本的图,右侧是个人理解所画的,按照在文中的理论来说,个人认为应该是先查询缓存,如果查不到才会进行词法分析,比如有一条SQL:select * from T where ID = 10;,先去缓存中以该条SQL为key开始查询缓存,如果没查询到才会开始解析该SQL,通过select关键词分析可以知道该条SQL是要做
转载 2023-12-01 11:20:05
125阅读
07 | 行锁功过:怎么减少行锁对性能的影响二阶段锁协议:在执行某条SQL时加锁,在事务提交后统一释放锁。设置锁等待的超时时间:innodb_lock_wait_timeout,默认情况下是50秒。发起死锁检测,innodb_deadlock_detect设置为on,默认情况下是on,缺点就是会耗费大量的CPU资源(发现死锁后主动回滚某一个事务,让其他事务得以继续执行)。如果你的事务中需要锁多个行
转载 2023-10-12 06:43:36
193阅读
23 | MySQL是怎么保证数据不丢失的?事务执行过程中,先把日志写到binlog cache,事务提交的时候,再把binlog cache写到binlog文件中。每一个线程都会分配一个binlog cache,由参数binlog_cache_size控制单个线程内binlog cache的大小,如果超过了这个参数规定的大小,那么就会暂存到磁盘的临时空间中。在事务提价后,会清空binlog ca
转载 2024-04-22 15:01:03
86阅读
        如果是可重复读隔离级别,事务 T 启动的时候会创建一个视图 read-view,之后事务 T 执行期间,即使有其他事务修改了数据,事务 T 看到的仍然跟在启动时看到的一样。也就是说,一个在可重复读隔离级别下执行的事务,好像与世无争,不受外界影响。    &nbsp
转载 2024-07-25 16:38:11
107阅读
05 | 深入浅出索引(下)覆盖索引:如果查找的列本身就在二级索引上,那么就不要回表了,这样子的索引叫做覆盖索引,通常用来减少回表的次数以提高性能。联合索引:使用多个字段组合的索引,假设有联合索引(a,b),那么在索引树中它会先根据a的大小进行排序,如果有相同值的a在按照b的大小进行排序。最左前缀:可以是联合索引的最左N个字段,比如说有联合索引(a,b,c),那么等值查询条件是a = 1的时候会用
转载 2024-01-08 15:45:07
65阅读
目录2. 概述 ¶3. 区域支持 ¶3.1. 区域支持概述 ¶3.2. 区域支持配置 ¶3.3. 行为 ¶3.4. 问题 ¶2. 概述 ¶ 本章从管理员的角度介绍了KingbaseES本地化功能。KingbaseES可以通过以下两种方法支持本地化:利用操作系统
转载 2024-04-30 21:52:57
87阅读
作为国产数据库的头部企业,人大金仓的数据库基于开源数据库PostgreSQL开发而成,具有较好的性能及使用体验。这里先来一段人大金仓对自己产品的描述:人大金仓致力于打造最便捷的国产化替代方案,最可靠、最智能的数据库产品服务,完善的DB上云方案,性能卓越的数据库集群方案,通过产品+技术服务相结合的方式为用户提供安全可靠的数据管理与服务。人大金仓致力于打造最便捷的国产化替代方案,最可靠、最智能的数据库
03 | 事务隔离:为什么你改了我还看不见事务的特性:ACID,即对应原子性、一致性、隔离性、持久性。通过undo log来保证原子性,能够撤销事务内的所以操作来保证原子性,要么是全部都成功,通过redo log来保证持久性,会根据策略进行刷脏,通过锁+MVCC的方式来保证隔离性,而一致性指的是从一个正确的状态迁移到另外一个正确的状态下,其实就是通过事务中的AID来保证C。并发事务可能出现的问题:
[3. 事务隔离:为什么你改了我还看不见?]基本概念复习:事务的特性:原子性、一致性、隔离性、持久性多事务同时执行的时候,可能会出现的问题:脏读、不可重复读、幻读事务隔离级别:读未提交、读提交、可重复读、串行化 一.Mysql的隔离级别1.读未提交是指,一个事务还没提交时,它做的变更就能被别的事务看到。(可以读到其他事务未提交的数)2.读提交是指,一个事务提交之后,它做的变更才会被其他事务看到。(
在这篇博文中,我将分享我的经历,探讨如何解决“mysql实战45讲奇”中遇到的问题,并提供详细的步骤指导。接下来,我会通过多个板块深入分析整个过程,确保你在实现过程中不再迷茫。 ### 环境准备 在开始之前,我们需要确保有一个干净的环境来执行我们的操作。请按以下要求进行安装: | 组件 | 版本 | 兼容性 | |-----------
原创 6月前
32阅读
  • 1
  • 2
  • 3
  • 4
  • 5