- InnoDB通过BTree实现索引,Page(这里主要指Index Page,以下类似)包含了所有数据和索引的信息。原因是:Page为了让BTree索引更加高效,对Page的结构进行针对性的设计,使得Page被加载到内存中后,可以基于Page中的信息快速地构建出BTree,同时尽可能地减少额外的内存占用,提升BTree的修改、重构的性能。本文将通过Page的结构,来看InnoDB是如何做到这些的。 InnoDB通过BTree实现索引,Page(这里主要指Index Page,以下类似)包含了所有数据和索引的信息。原因是:Page为了让BTree索引更加高效,对Page的结构进行针对性的设计,使得Page被加载到内存中后,可以基于Page中的信息快速地构建出BTree,同时尽可能地减少额外的内存占用,提升BTree的修改、重构的性能。本文将通过Page的结构,来看InnoDB是如何做到这些的。
- 1 介绍Percona Xtrabackup是目前比较流行的MySQL热备份工具。其工具集中包括innobackupex、xbcrypt、xbstream、xtrabackup等。比较常用的就是innobackupex和xtrabackup。在2.3版本之前innobackupex是一个perl脚本,其封装了xtrabackup。从2.3版本开始这个脚本的所有功能都在xtrabackup 1 介绍Percona Xtrabackup是目前比较流行的MySQL热备份工具。其工具集中包括innobackupex、xbcrypt、xbstream、xtrabackup等。比较常用的就是innobackupex和xtrabackup。在2.3版本之前innobackupex是一个perl脚本,其封装了xtrabackup。从2.3版本开始这个脚本的所有功能都在xtrabackup
- Btr: B+ Tree,是innodb的核心数据结构,它作为数据的索引,让数据库能够快速找到指定的数据。B+ Tree的相关说明网上已经很多,本文通过insert操作的调用栈,来分析btr的操作过程。· Btr操作在insert的哪个过程中被调用?图1 insert的函数调用栈(btr部分)图1是一次insert操作打印的trace日志。大家可以看到第一行write_record Btr: B+ Tree,是innodb的核心数据结构,它作为数据的索引,让数据库能够快速找到指定的数据。B+ Tree的相关说明网上已经很多,本文通过insert操作的调用栈,来分析btr的操作过程。· Btr操作在insert的哪个过程中被调用?图1 insert的函数调用栈(btr部分)图1是一次insert操作打印的trace日志。大家可以看到第一行write_record
- MySQL源码学习(三) Group Commit承接MySQL源码学习(一) 从一次insert开始,本文会详细展开说明其中流程之一——Group CommitGroup Commit是MySQL 5.6版本加入的特性,目的是为了提高事务的并发度,并以此提高MySQL的性能。Group Commit的原理在多线程并发中,如果必须对资源的操作进行加锁,开发者最先想到的流程就是在资源操作前获取锁,操 MySQL源码学习(三) Group Commit承接MySQL源码学习(一) 从一次insert开始,本文会详细展开说明其中流程之一——Group CommitGroup Commit是MySQL 5.6版本加入的特性,目的是为了提高事务的并发度,并以此提高MySQL的性能。Group Commit的原理在多线程并发中,如果必须对资源的操作进行加锁,开发者最先想到的流程就是在资源操作前获取锁,操
- MySQL源码学习(二) Buffer PoolBuffer Pool是innodb的核心组件之一,所有数据的读取,都会先放到Buffer Pool中,再读取出来,而不是直接读取datafile文件。那么对于类似笔者这样的新手来说,从哪里开始阅读buffer pool的代码呢?在源代码中,几乎搜不到”buffer pool”这样的关键字?1. 从buf_pool_t开始在mysql代码 MySQL源码学习(二) Buffer PoolBuffer Pool是innodb的核心组件之一,所有数据的读取,都会先放到Buffer Pool中,再读取出来,而不是直接读取datafile文件。那么对于类似笔者这样的新手来说,从哪里开始阅读buffer pool的代码呢?在源代码中,几乎搜不到”buffer pool”这样的关键字?1. 从buf_pool_t开始在mysql代码
- 对于数据库来说,可用性和可靠性是永恒的话题,DBA会按照业务的不同要求选择不同的策略保证系统正常运作,其中包含数据库本身内核提供的能力和外部的监控管理系统。商用数据库提供全套的管理系统,缺点只有一个,贵。开源数据库也有很多生态工具以及借助于其他组件的解决方案,也能完成相应功能,但有一定的技术门槛和维护成本。 云数据库服务以较低的价格提供了企业级的解决方案,并节省了运维成本,只需要配置,服务就能按 对于数据库来说,可用性和可靠性是永恒的话题,DBA会按照业务的不同要求选择不同的策略保证系统正常运作,其中包含数据库本身内核提供的能力和外部的监控管理系统。商用数据库提供全套的管理系统,缺点只有一个,贵。开源数据库也有很多生态工具以及借助于其他组件的解决方案,也能完成相应功能,但有一定的技术门槛和维护成本。 云数据库服务以较低的价格提供了企业级的解决方案,并节省了运维成本,只需要配置,服务就能按
- 问题描述我们在对数据库进行性能测试的时候最常用到的测试工具是sysbench,这款工具功能强大,已经成为业界测试主流数据库性能的标准,目前用sysbench测试的时候采用的测试数据量一般是64张表,每张表10000000笔数据,这个数据量大概有150GB,一般情况下这些数据是用sysbench的prepare参数通过oltp.lua脚本一条一条的生成随机数据,再一条一条的插入到数据库中,这个准备过 问题描述我们在对数据库进行性能测试的时候最常用到的测试工具是sysbench,这款工具功能强大,已经成为业界测试主流数据库性能的标准,目前用sysbench测试的时候采用的测试数据量一般是64张表,每张表10000000笔数据,这个数据量大概有150GB,一般情况下这些数据是用sysbench的prepare参数通过oltp.lua脚本一条一条的生成随机数据,再一条一条的插入到数据库中,这个准备过
- 1 介绍MySQL 提供了异步复制,主库并不关心备库是否收到日志,从而可能导致较多的数据丢失。从MySQL5.5开始引入了一种半同步复制功能,该功能可以确保主服务器和至少一台从服务器之间的数据一致性和冗余,从而可以减少数据的丢失。1.1 异步复制 master将binlog event发送给slave后,不去确认slave是否已经收到就返回成功给客户端。1.2 半同步 1 介绍MySQL 提供了异步复制,主库并不关心备库是否收到日志,从而可能导致较多的数据丢失。从MySQL5.5开始引入了一种半同步复制功能,该功能可以确保主服务器和至少一台从服务器之间的数据一致性和冗余,从而可以减少数据的丢失。1.1 异步复制 master将binlog event发送给slave后,不去确认slave是否已经收到就返回成功给客户端。1.2 半同步
- 随着MongoDB, ElasticSearch, Hadoop, CouchDB和Cassandra服务器的的沦陷,MySQL数据库成了攻击者的下一个猎杀目标。他们劫持了MySQL数据库,并留下勒索信息,要求支付2比特币的赎金。PLEASE_READ.WARNING攻击者以“root”密码暴力破解开始,一旦成功登陆,该黑客会获取已有MySQL数据库及其表的列表,TA在已有的数据库中新建一个名为W 随着MongoDB, ElasticSearch, Hadoop, CouchDB和Cassandra服务器的的沦陷,MySQL数据库成了攻击者的下一个猎杀目标。他们劫持了MySQL数据库,并留下勒索信息,要求支付2比特币的赎金。PLEASE_READ.WARNING攻击者以“root”密码暴力破解开始,一旦成功登陆,该黑客会获取已有MySQL数据库及其表的列表,TA在已有的数据库中新建一个名为W
- 很多时候,RDS用户经常会问如何调优RDS MySQL的参数,为了回答这个问题,写一篇来进行解释:哪一些参数不能修改,那一些参数可以修改;这些提供修改的参数是不是已经是最佳设置,如何才能利用好这些参数;哪些参数可以改细心的用户在购买RDS的时候都会看到,不同规格能够提供的最大连接数以及内存是不同的,所以这一些产品规格的限制参数:连接数、内存用户是不能够修改的,如果内存或者连接数出现了瓶颈:内存瓶颈 很多时候,RDS用户经常会问如何调优RDS MySQL的参数,为了回答这个问题,写一篇来进行解释:哪一些参数不能修改,那一些参数可以修改;这些提供修改的参数是不是已经是最佳设置,如何才能利用好这些参数;哪些参数可以改细心的用户在购买RDS的时候都会看到,不同规格能够提供的最大连接数以及内存是不同的,所以这一些产品规格的限制参数:连接数、内存用户是不能够修改的,如果内存或者连接数出现了瓶颈:内存瓶颈
- 我们先来看一个针对专业开发者的数据库受欢迎程度调查表: 而且据"路边社"报道,目前AWS和阿里云中MySQL的市场份额也是最大的,当然对于华为云来说,目前也在主推MySQL引擎。 那么问题来了:我们想向互联网转型,我们想节省人力成本,我们想上云,我们想上信誉度和安全性更高的华为云,可以要怎么上云呢?我们是传统企业,我们对数据库的使用很深入很全面,使用了很多存储过程、触发器、视图、自定 我们先来看一个针对专业开发者的数据库受欢迎程度调查表: 而且据"路边社"报道,目前AWS和阿里云中MySQL的市场份额也是最大的,当然对于华为云来说,目前也在主推MySQL引擎。 那么问题来了:我们想向互联网转型,我们想节省人力成本,我们想上云,我们想上信誉度和安全性更高的华为云,可以要怎么上云呢?我们是传统企业,我们对数据库的使用很深入很全面,使用了很多存储过程、触发器、视图、自定
- mysql 创建用户后分配权限失败的解决方法 mysql 创建用户后分配权限失败的解决方法
- web开发可能会用到的一个环境是PHP+mysql+apache的方案,由于这些都是开源软件,所以使用起来也挺便捷的,想深究的童鞋还可以把源代码撸下来一探究竟,只是第一次接触时,去搭建这个环境还真是遇到了不少坑。 web开发可能会用到的一个环境是PHP+mysql+apache的方案,由于这些都是开源软件,所以使用起来也挺便捷的,想深究的童鞋还可以把源代码撸下来一探究竟,只是第一次接触时,去搭建这个环境还真是遇到了不少坑。
- 1 简介本文是一份 Git 高级功能速查表,涵盖常用但容易被忽视的高效功能,包含 命令 + 使用场景 + 示例。需要的可以直接放到文档或 README 里当速查手册。 2 Git 历史与调试git blame <file> 查看文件每一行是谁、何时改的 git blame maingogit log -p 查看提交历史和补丁 git log -p -2(最近 2 次提交)git log ... 1 简介本文是一份 Git 高级功能速查表,涵盖常用但容易被忽视的高效功能,包含 命令 + 使用场景 + 示例。需要的可以直接放到文档或 README 里当速查手册。 2 Git 历史与调试git blame <file> 查看文件每一行是谁、何时改的 git blame maingogit log -p 查看提交历史和补丁 git log -p -2(最近 2 次提交)git log ...
- 1. MySQL触发器的底层实现变化在 MySQL 5.x → 8.x 的演进中,触发器实现主要有以下变化:事件驱动机制重构在 5.x 中,触发器执行是内嵌在语句执行过程中,逻辑分散在不同的 SQL 层。MySQL 8 将触发器的调度与存储过程/事件调度统一在 Server 层(SQL层),以“事件调度器(Event-driven architecture)”来管理,这让触发器和存储过程、... 1. MySQL触发器的底层实现变化在 MySQL 5.x → 8.x 的演进中,触发器实现主要有以下变化:事件驱动机制重构在 5.x 中,触发器执行是内嵌在语句执行过程中,逻辑分散在不同的 SQL 层。MySQL 8 将触发器的调度与存储过程/事件调度统一在 Server 层(SQL层),以“事件调度器(Event-driven architecture)”来管理,这让触发器和存储过程、...
上滑加载中
推荐直播
-
华为云码道Agent集成与鸿蒙实战2026/08/11 周二 19:00-21:00
王一男-华为云码道产品规划专家;李炎-华为云码道产品专家;彭江敏-华为云鸿蒙端云一体化开发专家
本次直播带你解读华为云码道7月份产品新特性、新功能。更有专家演示码道Agent Space × 钉钉机器集成实战,从0到1打通消息通道;码道鸿蒙端云一体化实战,快速搭建员工签到系统。
回顾中 -
华为云开发者AI素养直播课·第五期2026/09/04 周五 16:00-18:00
林华鼎-华为云AI开发者运营负责人;蒋春阳-华为云AI开发者案例开发专家
本期直播内容: AI工具体验营 · 第5-8课连讲。Agent-Team 多智能体协作完成毕业设计实践
回顾中 -
华为云开发者AI素养ClassRoom·第六期2026/09/08 周二 19:00-20:00
樊渊-2026华为软件挑战赛冠军
高手来了:看软挑高手解析二维排样问题—从工业难题到算法突破
回顾中
热门标签