MySQL使用可重复读作为默认隔离级别的原因

MySQL使用可重复读作为默认隔离级别的原因
一般的DBMS系统,默认都会使用读提交(Read-Comitted,RC)作为默认隔离级别,如Oracle、SQL Server等,而MySQL却使用可重复读(Read-Repeatable,RR)。要知道,越高的隔离级别,能解决的数据一致性问题越多,理论上性能损耗更大,可并发性越低。隔离级别依次为 SERIALIZABLE > RR > RC > Read-Uncommited 在SQL标准中,前三种隔离级别分别解决了幻象读、不可重复读和脏读的问题。那么,为什...

Innodb页面存储结构-2

Innodb页面存储结构-2
上一篇《Innodb页面存储结构-1》介绍了Innodb页面存储的总体结构,本文会介绍页面的详细内容,主要包括页头、页尾和记录的详细格式。 学习数据结构时都说程序等于数据结构+算法,而在innodb中,其页面结构和记录格式可以说就是其数据结构。并且理解这些结构后,对innodb的页面行为(算法)的理解也有很大帮助。 1. 表空间 介绍页面具体结构之前,先介绍一些Innodb表空间的概念。 表空间,数据文件的...

Innodb页面存储结构-1

Innodb页面存储结构-1
本文介绍Innodb的索引数据页面存储结构,主要介绍数据页面的整体结构,而页面的详细结构将会在另一篇中介绍。 1. B+树 阅读本文前,首先要知道一些关于B树的基础知识。Innodb的一个表可能包含多个索引,每个索引都使用B+树来存储。而索引包括聚集索引和二级索引,聚集索引使用表的主键作为索引键,包含表的所有字段。二级索引只包含索引键和聚集索引键(主键)的内容,不包括其他字段。每一个索引都是一...

MySQL client模块源码逻辑

MySQL client模块源码逻辑
MySQL的client是与server进行交互的模块,下面从源码的角度对client的处理逻辑进行讨论。 client的入口是client/mysql.cc中的main函数。主要有如下函数: MY_INIT(),初始化一些系统函数、资源及变量,比如线程、临界区及tcp/ip等; Isatty(),判定输入输出是文件还是console; load_defaults(),从配置文件读取配置参数; get_options(),读取mysql 选项参数; batch_readl...

为MySQL源码添加变长动态数组

为MySQL源码添加变长动态数组
【现状】 MySQL 5.5社区版中已经有一种叫DYNAMIC_ARRAY的数据结构,是一种存储定长元素的动态数组。“定长”说的是数组中每一个元素所占字节数在运行时是恒定不变的;“动态”说的是这个数组的个数可以随着元素的增加而自动扩容。 先来看一下动态数组成员结构: [cpp] typedef struct st_dynamic_array { uchar *buffer; /* 内存首地址 */ uint elements; /* 元素个数 */ uint max_element; /* ...
Copyright © 腾讯游戏DBA团队 保留所有权利.  

用户登录

分享到: