02 2016 档案
MySQL中myisam和innodb的主键索引有什么区别?
摘要:MyISAM引擎使用B+Tree作为索引结构,叶节点的data域存放的是数据记录的地址。下图是MyISAM索引的原理图: 这里设表一共有三列,假设我们以Col1为主键,则上图是一个MyISAM表的主索引(Primary key)示意。可以看出MyISAM的索引文件仅仅保存数据记录的地址。在MyISA
阅读全文
MySQL中的xtrabackup的原理解析
摘要:xtrabackup的官方下载地址为 http://www.percona.com/software/percona-xtrabackup。 xtrabackup包含两个主要的工具,即xtrabackup和innobackupex,二者区别如下: 1 xtrabackup只能备份innodb和xtr
阅读全文
MySQL中备份的几种方式
摘要:前言: 并不是每家公司都高大上,并不是每家公司都会用一些很前沿的技术来做备份这一块,有些企业或者有些行业或者团队本身由于各方面的原因使用简单或者复杂的方式来做备份这块,这次这个文档算是对以前工作的总结,看一下各种备份方式中的优缺点 1 mysqldump 常用的备份参数 -R --events --
阅读全文
MySQL中too many connections超出最大连接数的处理方法
摘要:MySQL最大连接数的问题 在MySQL的源码中,默认最大的连接数是16384 {"max_connections", OPT_MAX_CONNECTIONS, "The number of simultaneous clients allowed.", (gptr*) &max_connectio
阅读全文
MySQL中有关icp mrr和bka的特性
摘要:文辉考我的问题,有关这三个的特性,如果在面试过程中,个人见解可以答以下 icp MyQL数据库会在取出索引的同时,判断是否进行WHERE条件过滤,也就是把WHERE的部分过滤操作放在存储引擎层,在某些查询下,可以大大减少上层SQL对记录的索引从而提供整体性能 mrr 目的是为了减少磁盘的随机访问。并
阅读全文
MySQL中的SQL流程分析简述
摘要:分析MySQL中这条语句的整个流程 update table_a set c1=xx where c2=xxx 朋友考我的一个问题在此处列出个人见解 1 客户端连接进来首先进行权限验证 2 验证通过后 进入SQL接口,接收用户的SQL命令 3 SQL命令到解释器中进行验证和解析 4 解析后查询优化器
阅读全文
MySQL中InnoDB脏页刷新机制Checkpoint
摘要:我们知道InnoDB采用Write Ahead Log策略来防止宕机数据丢失,即事务提交时,先写重做日志,再修改内存数据页,这样就产生了脏页。既然有重做日志保证数据持久性,查询时也可以直接从缓冲池页中取数据,那为什么还要刷新脏页到磁盘呢?如果重做日志可以无限增大,同时缓冲池足够大,能够缓存所有数据,
阅读全文
MySQL中Btree和Hash的局限小结
摘要:在索引中,Btree索引和Hash索引的局限性,在这里粗略罗列一下 1 Btree局限 B-树中的节点都是顺序存储的,所以可以利用索引进行查找(找某些值),也可以对查询结果进行ORDER BY(注意ORDER BY后面建议跟主键)1 查询必须从索引最左边的列开始2 不能跳过某一索引列3 存储引擎不能
阅读全文
MySQL中数据中设计中的范式与反范式
摘要:设计关系数据库时,遵从不同的规范要求,设计出合理的关系型数据库,这些不同的规范要求被称为不同的范式,各种范式呈递次规范,越高的范式数据库冗余越小。但是有些时候一昧的追求范式减少冗余,反而会降低数据读写的效率,这个时候就要反范式,利用空间来换时间。 目前关系数据库有六种范式:第一范式(1NF)、第二范
阅读全文
MySQL中redo日志
摘要:重做日志用来实现事务的持久性,即ACID中的D,由两部分组成: 一是内存中的重做日志缓冲(redo log buffer) 易丢失 二是重做日志文件(redo log file) 持久的 InnoDB是事务的存储引擎,其通过Force Log at Commit 机制实现事务的持久性,即当事务提交c
阅读全文
MySQL中事务的分类
摘要:从事务理论的角度来看,可以把事务分为以下几种类型 扁平事务(Flat Transactions) 带有保存点的扁平事务(Flat Transactions with Savepoints) 链事务(Chained Transactions) 嵌套事务(Nested Transactions) 分布式
阅读全文
MySQL中事务的概述ACID了解
摘要:事务可由一条非常简单的SQL语句组成,也可以有一组复杂的SQL语句组成。事务是访问并更新数据库中各种数据项的一个程序执行单元。在事务中操作,要么都做修改,要么都不做,这就是事务的目的,也是事务模型区别与文件系统的重要特征之一 对于InnoDB而言,其默认的事务隔离级别为RR,完全遵循和满足事务的AC
阅读全文
MySQL中UNSIGNED和ZEROFILL的介绍
摘要:UNSIGNED: 将数字类型无符号化,这与C和C++这些程序语言的unsigned含义相同。 INT的类型范围-2 147 483 648~2 147 483 647 INT UNSIGNED范围0~4 294 967 295 看起来是个不错的属性选项,特别是对于主键自增长的类型,因为一般来说,用
阅读全文
MySQL中死锁
摘要:1 、死锁的概念 是指两个或两个以上的事务在执行过程中,因争夺资源而造成的一种互相等待的现象。若无外力作用,事务都将无法推进下去,解决死锁的最简单问题是不要有等待,任何的等待都转换为回滚,并且事务重新开始,但在线上环境,这可能会导致并发性能下降,甚至任何一个事务都不能进行,而这所带来的问题远比死锁的
阅读全文
MySQL中阻塞
摘要:因为不同锁之间的兼容性关系,在有些时刻一个事务中的锁需要等待另一个事务中的锁释放它占有的资源,这就是阻塞。阻塞不是一件坏事,是为了保证事务可以并发并且正常的运行 在InnoDB存储引擎中,参数innodb_lock_wait_timeout用来控制等待的时间(默认50秒),innodb_rollba
阅读全文
MySQL中锁问题
摘要:1、脏读 脏页只是在缓冲池中已经修改的页但是没有刷新到磁盘中,即数据库实例内存中的页和磁盘中的页事不一致的,当然在刷新到磁盘之前,日志都已经被写入到了重做日志文件中,而所谓的脏数据是指事务对缓冲池中行记录的修改,但并没有被提交 对于脏页的读取,是非常正常的。脏页是因为数据库实例内存和磁盘异步造成的,
阅读全文
MySQL中行锁的算法
摘要:行锁的3中算法 Record Lock:单个行记录上的锁 Gap Lock:间隙锁,锁定一个范围,但不包含记录本身 Next-key Lock:Gap Lock+Record Lock锁定一个范围,并且锁定记录本身 Record Lock总是会去锁住索引记录,如果InnoDB存储引擎表在建立的时候没
阅读全文
MySQL中自增长与锁
摘要:在InnoDB存储引擎中,对于每个含有自增长值的表都有一个自增长计数器(auto-increment counter)当对含有自增长的计数器的表进行插入操作时,这个计数器会被初始化,执行如下的语句可以得到计数器的值 >SELECT MAX(auto_inc_col) FROM t FOR UPDAT
阅读全文
MySQL中一致性非锁定读
摘要:一致性非锁定读(consistent nonlocking read)是指InnoDB存储引擎通过多版本控制(multi versionning)的方式来读取当前执行时间数据库中行的数据,如果读取的行正在执行DELETE或UPDATE操作,这是读取操作不会因此等待行上锁的释放。相反的,InnoDB会
阅读全文
MySQL中锁的类型
摘要:InnoDB存储引擎实现了一下两种标准的行级锁: 共享锁S LOCK 允许事务读一行数据 排他锁 X LOCK 允许事务删除或更新一行数据 如果是一个事务T1斤获得了行r的共享锁,那么另外一个事务T2可以立即获得行r的共享锁,因为读取并没有改变行r的数据,称这种情况为锁兼容Lock Compatib
阅读全文
浙公网安备 33010602011771号