
mysql
文章平均质量分 90
qiuyepiaoling
dba
展开
-
MySQL DELETE 删除语句加锁分析
转自https://www.fordba.com/lock-analyse-of-delete.html1. 前言在MySQL的使用过程中,对SQL加锁的类型经常感到疑惑,这让死锁分析也变得举步维艰。因此需要将MySQL的各种SQL在各个隔离级别下加的锁进行分析,以免再次分析的时候还感到疑惑,也方便用于查询。本次分析对SQL的删除语句进行分析,主要从以下几种情况进行分析:非唯一索引删除一条存在的记录 唯一索引删除一条存在的记录 主键删除一条存在的记录 非唯一索引删除一条不存在记录 唯转载 2021-03-25 15:07:09 · 1705 阅读 · 0 评论 -
binlog组提交
原文:https://www.cnblogs.com/0591jb/p/13918052.html通过sync_binlog=1控制事件持久化到磁盘,每次事务提交时进行fsync操作,将消耗大量的磁盘IOPS,如何最大化的提高性能,降低fsync对事务高并发的影响呢?一. 二阶段提交binlog是MySQL服务层产生的日志,每个线程有独立的缓存,在事务提交时才写入磁盘(fsync行为依赖sync_binlog设置),无法进行回滚,是逻辑的日志,记录行的改变或SQL语句。redo日志(WAL)转载 2020-12-24 11:35:03 · 726 阅读 · 0 评论 -
Innodb MVCC实现原理
原文:https://zhuanlan.zhihu.com/p/52977862理解MVCC之前,我们需要回顾了解一下数据库的一些其他相关知识点(1)数据库为什么要有事务?为了保证数据最终的一致性。(2)事务包括哪几个特性?原子性、隔离性、一致性、持久性。参考:事务的ACID特性:https://zhuanlan.zhihu.com/p/27789602(3)事务的并发引起了哪些问题?事务并发会引起脏读、重复读、幻读问题。(4)怎么解决事务并发出现...转载 2020-12-23 20:21:15 · 732 阅读 · 0 评论 -
MySQL时区相关问题
转自:https://cloud.tencent.com/developer/article/1655945在使用 MySQL 的过程中,你可能会遇到时区相关问题,比如说时间显示错误、时区不是东八区、程序取得的时间和数据库存储的时间不一致等等问题。其实,这些问题都与数据库时区设置有关,本篇文章将从数据库参数入手,逐步介绍时区相关内容。1.log_timestamps 参数介绍首先说明下log_timestamps参数并不影响时区,只是设置不同会影响某些日志记录的时间。该参数主要是控制 error转载 2020-12-11 12:47:27 · 195 阅读 · 0 评论 -
关于字符编码,你所需要知道的
<br />字符编码的问题看似很小,经常被技术人员忽视,但是很容易导致一些莫名其妙的问题。这里总结了一下字符编码的一些普及性的知识,希望对大家有所帮助。还是得从ASCII码说起<br /> <br />说到字符编码,不得不说ASCII码的简史。计算机一开始发明的时候是用来解决数字计算的问题,后来人们发现,计算机还可以做更多的事,例如文本处理。但由于计算机只识“数”,因此人们必须告诉计算机哪个数字来代表哪个特定字符,例如65代表字母‘A’,66代表字母‘B’,以此类推。但是计算机之间字符-数字的对应关系必须得转载 2010-07-12 11:40:00 · 1432 阅读 · 1 评论 -
mysql中的 skip-name-resolve 问题
今天安装了个,重启时发现Error.log有下面提示: 1100616 21:05:15 [Warning] 'user'entry 'root@hexuweb101'ignored in--skip-name-resolve mode. 2100616 21:05:15 [Warning] 'user'entry '@hexuweb101'ignored in--skip-name-resolve mode. 产生的原因是 my.cnf 中我设置了 skip-name-resolve,skip-name-转载 2010-07-13 17:40:00 · 1779 阅读 · 0 评论 -
mysql菜鸟常遇问题(转自老叶的博客)
<br /><br />新手们要做的是,学会看日志,并且找到问题所在,然后尝试自己动手解决,或者把问题描述清楚,让有经验的人士帮忙。情景1:mysql无法启动[ERROR] /usr/local/mysql/libexec/mysqld: Can't create/write to file '/usr/local/mysql/yejr.pid' (Errcode: 13)<br />可以看到,日志提醒的是,无法创建文件:/usr/local/mysql/yejr.pid,错误代码(Errcode)为:转载 2010-07-26 11:42:00 · 1380 阅读 · 0 评论 -
MySQL 5.5新特性
MySQL进入Oracle产品体系,获得了更多研发投入,新一代MySQL产品---MySQL5.5即将面世,较之之前的5.1版本,将获得诸多特性方面的提升,简单总结如下: 1. 默认存储引擎更改为InnoDB InnoDB作为成熟、高效的事务引擎,目前已经广泛使用,但MySQL5.1之前的版本默认引擎均为MyISAM,此次MySQL5.5终于做到与时俱进,将默认数据库存储引擎改为InnoDB,并且引进了Innodb plugin 1.0.7。此次更新对数据库的好处是显而易见的:InnoD转载 2010-08-07 14:48:00 · 2186 阅读 · 3 评论 -
Innodb共享表空间和独立表空间(来自吴炳锡)
<br />在使用Innodb引擎时将要面对两种表空间的管理选择的问题,Innodb有两种管理表空间的方法:<br /><br />1. 共享表空间(也可以拆分成多个小的表空间)<br /><br />2. 独立表空间每一个表有一个独立的表空间。<br /><br />我个人推荐使用独立表空间。在性能和运维上独立表空间比共享的表空间有很多优势。下面我将分别说明一下两种表空间管理的特点。<br /><br />共享表空间:<br /><br />优点:<br /><br />可以放表空间分成多个文件存放到转载 2010-08-12 12:13:00 · 2719 阅读 · 0 评论 -
mysql IN的问题
<br /> <br />mysql in 的排序select id fromtablewhere id in(2,1,36);查出来的结果是:1 2 3 6但是有的时候是要:2 1 3 6<br /> <br />有2种方法:1.select id fromtablewhere id in(2,1,3,6)order bysubstring_index('2,1,3,6',id,1);<br />substring_index(str,delim,count) 字符串截取函数<br />str 要截取的字原创 2010-08-14 16:49:00 · 925 阅读 · 0 评论 -
MySQL的优化(本文是Monty在O'Reilly Open Source Convention 2000大会上的演讲)(摘自老叶的博客,有删改)
<br /> <br />1、我们可以且应该优化什么? <br />硬件 <br />操作系统/软件库 <br />SQL服务器(设置和查询) <br />应用编程接口(API) <br />应用程序 <br /> <br />-------------------------------------------------------------------------------- <br /> <br />2、优化硬件 <br />如果你需要庞大的数据库表(>2G),你应该考虑使用64位的硬件结构原创 2010-08-24 10:33:00 · 610 阅读 · 0 评论 -
InnoDB主键设计(老叶)
<br /><br />InnoDB是clustered-index table,因此对于InnoDB而言,主键具有特殊意义。可以通过主键直接定位到对应的某一数据行记录的物理位置,主键索引指向对应行记录,其他索引则都指向主键索引;因此,可以这么说,InnoDB其实就是一个 B-树索引,这棵B-树的索引就是主键,它的值则是对应的行记录。<br />在InnoDB数据表设计中,我们需要注意几点:1. 显式的定义一个 INT 类型自增字段的主键,这个字段可以仅用于做主键,不做其他用途2. 如果不显式定义主键的话,转载 2010-10-15 10:48:00 · 810 阅读 · 0 评论 -
mysql权限管理
mysql的访问分两个阶段:1. 检查用户是否具有建立与mysql的连接的权利,主要依靠检查:用户名、主机名和密码;2. 建立了连接后,服务器检查客户端发出的每个请求。看是否有足够的权限实施它。例如执行select命令等。二、权限控制1. mysql访问权限管理通过6个表:user、db、host、tables_priv、columns_priv和procs_priv来控制,6个表的作用如下表:表名含义user控制“用户名”(user)可以从哪一台“主机名”(ho原创 2010-10-25 10:49:00 · 2612 阅读 · 0 评论 -
数据库性能调优技术系列文章(3)--深入理解嵌套循环执行计划(摘自老杨)
一、概述 这篇文章是数据库性能调优技术的第三篇。上一篇文章讲解了深入了解单表执行计划,单表执行计划是理解多表执行计划的基础。 两张表的连接有三种执行方式:1)嵌套循环连接;2)散列连接;3)归并连接。两张表连接时选择这三种中的哪一种呢?这取决于索引、以及连接的代价。在该系列的第三篇(本文)文章中讲解嵌套循环连接,第四篇文章中讲解散列连接,第五篇文章中讲解归并连接。在第六篇以后会分析IN子查询以及EXISTS子查询。 达梦数据库、oracle数据库、sql server数据转载 2010-10-27 10:38:00 · 548 阅读 · 0 评论 -
深入理解mysql之BDB系列(1)---BDB相关基础知识(摘自老杨)
一:BDB体系结构1.1.BDB体系结构BDB整体的体系结构如图1.1所示,包含五个子系统(见图1.1中相关数)。1)数据存取子系统,2)事务子系统,3)锁子系统,4)内存池管理子系统,5)日志子系统。在一个应用程序中,并不一定需要完全具备这5大子系统。如果程序只使用了数据存取子系统,它的体系结构如图1.2。在图1.2中,我们只使了两个子系统:数据存取以及内存池子系统。(备注:另外三个子系统在BDB系统中隐式调用)<br /><br /> 1.2.子系统的介绍1)数据存取子系统 数据存取子系统提供多种存转载 2010-10-27 10:50:00 · 855 阅读 · 0 评论 -
思考mysql内核之初级系列7---innodb的hash表实现(摘自老杨)
<br />在上一篇里面,bingxi和alex谈到了文件系统管理,在结构体里面出现了两个常用的结构:hash_table_t、UT_LIST_NODE_T。这两个结构比较常用,在本篇里面,bingxi和alex聊了下关于hash_table_t的内容。<br />对应的文件为:<br />D:/mysql-5.1.7-beta/storage/innobase/ha/hash0hash.c<br />D:/mysql-5.1.7-beta/storage/innobase/include/hash0has转载 2010-10-27 11:38:00 · 549 阅读 · 0 评论 -
B树系列文章(1)--查询操作(摘自老杨)
<br />B树是最重要的存取路径结构。B树总是平衡的,并且对任意修改操作来说,也容易维持B树的平衡。1.B树的基本思想<br /> B树的每个节点都是一个页面。B树有两种类型的节点:叶子节点和索引节点。叶子节点包含要查找的数据,对聚集索引而言数据是记录,对非聚集索引,这里的数据是指索引列、主关键字(或ROWID)。索引节点不包含数据,只包含下一层节点的路由信息。<br /> B树索引节点的抽象数据结构如下:ulint F; //在一个索引节点中最大入口项的数量<b转载 2010-10-27 10:26:00 · 638 阅读 · 0 评论 -
数据库性能调优技术系列文章(2)--深入理解单表执行计划 (摘自老杨)
一、概述 这篇文章是数据库性能调优技术的第二篇。上一篇讲解的索引调优是数据库性能调优技术的基础。这篇讲解的深入理解单表执行计划,是数据库性能调优的有力工具。 查询语句可以有多种可选执行计划,如何选择效率最高的执行计划?达梦数据库、oracle数据库、sql server数据库都是采用基于成本的查询优化,对备选执行计划进行打分,选择代价最小的执行计划进行执行。这些内容,我会在后续的几篇文章中进行详细的描述。在此之前,我们首先需要掌握如何理解数据库执行计划。这篇文章讲解只涉及单表操作转载 2010-10-27 10:37:00 · 792 阅读 · 0 评论 -
深入理解数据库原理系列(2)---并发控制原理(摘自老杨)
<br />事务之间的相互影响可能导致数据库状态的不一致,即使各个事务能保持状态的正确性,而且也没有任何故障发生。因此,不同事务中各个步骤的执行顺序必须以某种方式进行规范。控制这些步骤的功能由DBMS的调度器部件完成,而保证并发执行的事务能保持一致性的整个过程称为并发控制。调度器的作用如图1所示。<br /> 首先讨论如何保证并发执行的事务能保持数据库状态的正确性。抽象的要求称为可串行性,另外还有一个更强的、重要的条件为冲突可串行性,它是大多数调度器所真正实现的。我们考虑实现调度器的最重要技术:封锁、时转载 2010-10-27 11:05:00 · 651 阅读 · 0 评论 -
InnoDB记录结构浅析(摘自老杨)
<br />InnoDB记录由三个部分组成,见表1:表1:InnoDB的记录组织形式名称长度Field Start OffsetsF*1或者 (F*2)个字节Extra Bytes6个字节Field Contents和记录的实际内容相关备注:1) “F”是指记录的字段数量。2) “Field Start Offsets”是一个目录列表,分别指向下一个字段实际存储的偏移值。3) “Extra Bytes”的长度是不变的,占用6个字节。4) “Field转载 2010-10-27 11:10:00 · 468 阅读 · 0 评论 -
mysql内核分析--innodb动态数组内部实现(上) (摘自老杨)
<br />1. 动态数组概述<br />动态数组涉及的文件是innodb存储引擎的三个文件:dyn0dyn.h、dyn0dyn.ic以及dyn0dyn.c。<br /> 这是一个基本的组件功能,是作为一个动态的虚拟线性数组。数组的基本元素是byte。动态数组dyn主要用来存放mtr的锁定信息以及log。Dyn在实现上,如果block需要分裂节点,则会使用一个内存堆。每个blok块存储数据的数据字段的长度是固定的(默认值是512),但是不一定会完全用完。假设需要存储的数据项的尺寸大于数据块时转载 2010-10-27 11:17:00 · 523 阅读 · 0 评论 -
思考mysql内核之初级系列1--- mysql的启动过程(摘自老杨)
<br />有一天,两个不懂mysql内核的人想去了解mysql内核代码,两个人不是去调试代码、查找资料,而是在那边思考。因为不了解内核,所以边思考边去验证。<br /> 使用的mysql代码是5.1.7,调试环境是windows平台下的vs2003。<br /> <br /> Bingxi:“alex,你觉得mysql的启动过程会是什么样的呢?我们以银行为例吧。”<br /> Alex:“嗯,bingxi。早上银行开门了,会先准备好环境,然后开门迎客,mysql也是这样。Mysql里面会有一个ha转载 2010-10-27 11:25:00 · 461 阅读 · 0 评论 -
思考mysql内核之初级系列3---办理业务的流程(摘自老杨)
<br />Alex第二天带了身份到银行找了小张,要办理个开户业务。<br /> <br />1)语法结构Lex<br /> Alex:“小张,我要开个账户。”<br /> 小张:“麻烦填写个开户申请单。”<br /> Alex:“好的,我顺便问个问题,开户要填写开户申请单,兑换港币也要写申请单,汇款等也需要填写,这里面既有共性,又有差异性,是如何管理的。”<br /> 小张:“嗯,差不多,都是提供写一些表单填写,假设申请创建表,那么就会用到create_info申请表(数据结构),如下面的代码。<转载 2010-10-27 11:29:00 · 442 阅读 · 0 评论 -
思考mysql内核之初级系列5---information_schema不是innodb数据字典(摘自老杨)
<br />上次谈到了innodb缓冲区里面有些页被使用了,这些中有些被数据字典用了。那么什么是数据字典呢?bingxi和alex继续思考。<br /> <br />1) information_schema不是innodb数据字典<br /> bingxi:“alex,我觉得information_schema这个里面存储的不是数据字典,为了准确起见,换个说法,information_schema不是innodb数据字典。”<br /> alex:“是的,innodb一直有数据字典的概念,而inf转载 2010-10-27 11:34:00 · 620 阅读 · 0 评论 -
思考mysql内核之初级系列6---innodb文件管理(摘自老杨)
<br />在上一篇里面,bingxi和alex思考了information_schema,这个一直在innodb外围打转。没有进入到innodb的内部。在后续的文章中,以innodb的为主,逐个思考。Bingxi和alex今天了解了fil文件管理。<br />对应的文件为:<br />D:/mysql-5.1.7-beta/storage/innobase/fil/fil0fil.c<br />D:/mysql-5.1.7-beta/storage/innobase/include/fil0fil.h<b转载 2010-10-27 11:36:00 · 662 阅读 · 0 评论 -
B树系列文章(3)--删除、更新操作(摘自老杨)
4.B树上的删除元组操作 假设B树的组织形式如图7。 删除索引键值为9的记录,执行流程: 1)以索引键值=9查询B树,定位要删除的元组,该元组位于叶子节点L1。 2)删除索引键值=9的入口项,10、16对应的记录向前移动一个位置。参照图8。 一般的文档上都会描述下溢节点,也就是说入口项占有率<50%(一般的设为50%),就会与兄弟节点进行合并,从而使所有节点的最小占有率≥50%。这样做的好处是显而易见的,维持B树在合理的深度。但是这样可能频繁的合并、分裂操作。 所以,大转载 2010-10-27 10:31:00 · 566 阅读 · 0 评论 -
数据库性能调优技术系列文章(1)--索引调优(摘自老杨)
一、概述 随着数据库在各个领域的使用不断增长,越来越多的应用提出了高性能的要求。数据库性能调优是知识密集型的学科,需要综合考虑各种复杂的因素:数据库缓冲区的大小、索引的创建、语句改写等等。总之,数据库性能调优的目的在于使系统运行得更快。 调优需要有广泛的知识,这使得它既简单又复杂。 说调优简单,是因为调优者不必纠缠于复杂的公式和规则。许多学术界和业界的研究者都在尝试将调优和查询处理建立在数学基础之上。 称调优复杂,是因为如果要完全理解常识所依赖的原理,还需要对应用、数据库管理系统、操作系统以及硬件有转载 2010-10-27 10:35:00 · 679 阅读 · 0 评论 -
数据库性能调优技术系列文章(4)--深入理解散列连接执行计划(摘自老杨)
一、概述这篇文章是数据库性能调优技术系列的第四篇。上一篇文章讲解了深入理解嵌套循环连接执行计划。上一篇文章中提到两张表的连接有三种执行方式:1)嵌套循环连接;2)散列连接;3)归并连接。散列连接是很重要的连接方式,包含比较多的内容,这篇文章中讲解为什么需要散列连接?如何理解散列连接?和前三篇文章一样,本文讲解的是些比较抽象的内容,不拘泥于具体的数据。所以本文中使用的代价评估模型也是抽象的,假设了数据库缓冲区大小只有一个页,新页的读取必然导致旧页的释放。读完本文之后应该能够读懂达梦数据库、oracle数据库、转载 2010-10-27 10:42:00 · 799 阅读 · 0 评论 -
深入理解mysql之BDB系列(2)---数据元页结构(摘自老杨)
三:数据元页结构3.1 metepage头结构该结构是一个公共结构。用于B树matapage页、HASH的matepage页以及queue的metapage。 typedef struct _dbmeta33 { DB_LSN lsn; //LSN db_pgno_t pgno; //当前页号 u_int32_t m转载 2010-10-27 10:51:00 · 501 阅读 · 0 评论 -
Mysql查询优化器浅析(上)(摘自老杨)
1 定义 Mysql查询优化器的工作是为查询语句选择合适的执行路径。查询优化器的代码一般是经常变动的,这和存储引擎不太一样。因此,需要理解最新版本的查询优化器是如何组织的,请参考相应的源代码。整体而言,优化器有很多相同性,对mysql一个版本的优化器做到整体掌握,理解起mysql新版本以及其他数据库的优化器都是类似的。 优化器会对查询语句进行转化,转化等价的查询语句。举个例子,优化器会将下面语句进行转化:SELECT … WHERE 5=a;转化后的等价语句为:SELECT … WHERE a=5;因转载 2010-10-27 11:11:00 · 436 阅读 · 0 评论 -
Mysql查询优化器浅析(下)(摘自老杨)
7 存取类型 当我们评估一个条件表达式,MySQL判断该表达式的存取类型。下面是一些存取类型,按照从最优到最差的顺序进行排列:system … 系统表,并且是常量表const … 常量表eq_ref … unique/primary索引,并且使用的是'='进行存取ref … 索引使用'='进行存取ref_or_null … 索引使用'='进行存取,并且有可能为NULLrange … 索引使用BETWEEN、IN、>=、LIKE等进行存取inde转载 2010-10-27 11:12:00 · 434 阅读 · 0 评论 -
如何编译mysql内核(摘自老杨)
<br />在最新的版本中,windows环境与linux环境下使用一套代码。比如mysql-6.0.4-alpha版本中的INSTALL-WIN-SOURCE文件的描述:<br /> To build MySQL on Windows from source, you must satisfy the<br /> following system, compiler, and resource requirements:<br /> * Windows 2000, Windows XP,转载 2010-10-27 11:15:00 · 469 阅读 · 0 评论 -
思考mysql内核之初级系列2---我可以为你服务什么?(摘自老杨)
<br />Alex取了个号,客户经理小张负责办理alex的服务。<br /> <br />1)服务清单<br /> 小张:“先生,我可以为你服务什么么?”<br /> Alex:“厄,我要一碗红烧肉。”<br /> 小张:“没有”<br /> Alex:“厄,那来碗拉面”<br /> 小张:“没有”<br /> Alex:“那有些啥?”<br /> 小张:“可以查看sql目录下sql_yacc.yy文件,不过你用的这个5.1.7没有该文件,只有相对应的sql_yacc.cpp文件。你可以使用转载 2010-10-27 11:27:00 · 514 阅读 · 0 评论 -
思考mysql内核之初级系列4--innodb缓冲区管理(摘自老杨)
<br />我们在前面讨论了一些mysql的基础知识,现在将要开始进入innodb引擎,从这里开始我们将开始代码的结构分析,innodb的内容分析之后,将反过来分析查询优化引擎。今天,我们先来讨论innodb缓冲区管理。<br />文件:<br />D:/mysql-5.1.7-beta/storage/innobase/include/buf0buf.h<br />D:/mysql-5.1.7-beta/storage/innobase/buffer /buf0buf.c<br /> <br /> Bi转载 2010-10-27 11:31:00 · 523 阅读 · 0 评论 -
思考mysql内核之初级系列12---innodb的簇描述结构(摘自老杨)
<br />在上一篇里,bingxi和alex聊了关于innodb的页编号。在本篇,bingxi和alex会讨论下簇描述结构。所谓的簇描述结构,对应的英文描述是extent,表达的意思是一些连续的页。<br />对应的文件为:<br />D:/mysql-5.1.7-beta/storage/innobase/fsp/ fsp0fsp.c<br />D:/mysql-5.1.7-beta/storage/innobase/include/ fsp0fsp.h<br /> <br />1)簇的定义<br />转载 2010-10-27 11:46:00 · 595 阅读 · 0 评论 -
B树系列文章(2)--插入操作(摘自老杨)
3.B树上的插入操作<br /> 为了便于问题的描述,现重新构造一个只有两层的B树。见图2。<br /><br /> 简单插入操作: <br /> 参考图2,先考虑一个简单的操作,向该B树插入一条索引键值为9的记录。执行流行如下: 1)执行索引键值=9的查找操作,确定该新记录应该插入到叶子节点L1中。 2)此时发现叶子节点L1中还是有空闲记录空间的,因此可以确定该新记录可以插入L1中而不会导致分裂。 3)将记录10、16向后移动移动一个位置,插入索引键值为9的新记录。插入之后,转载 2010-10-27 10:29:00 · 713 阅读 · 0 评论 -
深入理解数据库原理系列(1)---日志系统原理(摘自老杨)
一:事务系统1.事务的工作模型 事务必须满足原子性,所封装的操作或者全做或者全不做。事务管理系统需要做两件事,1)让日志系统产生日志,2)保证多个事务并发执行,满足ACID特性。 事务系统工作模型,见图1。 如图,事务管理管理器控制查询处理器的执行、控制日志系统以及缓冲区。日志在缓冲区生成,日志管理器在一定的时候控制缓冲区的刷盘操作。当系统崩溃的时候,恢复管理器就被激活,检查日志并在必要时利用日志恢复数据。 2.事务的原语操作在事务系统的运行当中,有三个地址空间供元素存储:1)磁盘空间、2)转载 2010-10-27 10:44:00 · 617 阅读 · 0 评论 -
深入理解mysql之BDB系列(3)---数据页结构(摘自老杨)
四:数据页结构4.1 B/H主要页结构4.1.1结构图<br />4.1.2数据结构 typedef struct _db_page { DB_LSN lsn; //LSN db_pgno_t pgno; //页号 db_pgno_t prev_pgno;转载 2010-10-27 11:03:00 · 493 阅读 · 0 评论 -
InnoDB页结构浅析(摘自老杨)
<br />InnoDB将所有的记录存放在数据库页中(也可以称为数据块)。一般情况下,所有的页大小都是16KB。 数据页中不仅仅包含实际的记录,还包含其它的一些内容,比如文件头以及文件尾等等。 InnoDB的页包含以下几个部分:1) Fil Header:文件头2) Page Header:页头3) Infimum+Supremum Records:最小虚记录以及最大虚记录4) User Records:用户记录5) Free Space:自由堆6转载 2010-10-27 11:08:00 · 508 阅读 · 0 评论 -
mysql内核分析--innodb动态数组内部实现(下)(摘自老杨)
<br />2)used<br /> used表示data[DYN_ARRAY_DATA_SIZE]字段中已经使用的字节的数量,假设需要申请len字节的长度,在使用之前需要判断的是,尾block中的可用空间是否够用。也就是判断判断下used+len是否满足used+len<= DYN_ARRAY_DATA_SIZE,如果满足就可以放进该block,并将已使用的字节数used加上len。<br /> 如果,该block空间不够,那么就会申请一个新的block,这里我们就可以明白了,为什么需要满足l转载 2010-10-27 11:20:00 · 464 阅读 · 0 评论