01 2013 档案
摘要:事务的四个特性1、原子性(atomicity)原子性是指整个数据库事务是不可分割的工作单位2、一致性(consistency)一致性指事务将数据库从一种状态转变为下一种一致的状态。在事务开始之前和事务结束之后,数据库的完整性约束没有被破坏。3、隔离性(isolation)一个事务的影响在该事务提交之前对其他事务都不可见------这通过锁来实现4、持久性(durability)事务一旦提交,其结果就是永久性的事务的实现隔离性通过Mysql InnoDB锁就可以实现,原子性、一致性、持久性通过数据库的redo和undo来完成隐式提交的SQL语句以下这些SQL语句会产生一个隐式的提交操作,即执行完
阅读全文
摘要:Mysql常用存储引擎的锁机制MyISAM和MEMORY采用表级锁(table-levellocking)BDB采用页面锁(page-levelocking)或表级锁,默认为页面锁InnoDB支持行级锁(row-levellocking)和表级锁,默认为行级锁各种锁特点表级锁:开销小,加锁快;不会出现死锁;锁定粒度大,发生冲突的概率最高,并发度最低行级锁:开销大,加锁慢;会出现死锁;锁定粒度最小,发生锁冲突的概率最低,并发度也最高页面锁:开销和加锁时间介于表锁和行锁之间;会出现死锁;锁定粒度介于表锁和行锁之间,并发度一般InnoDB存储引擎的锁InnoDB存储引擎实现了如下两种锁1、共享锁(S
阅读全文
摘要:Mysql默认情况下会有两个文件:ib_logfile0和ib_logfile1,这两个文件就是重做日志文件,或者事务日志。重做日志的目的:万一实例或者介质失败,重做日志文件就能派上用场。每个InnoDB存储引擎至少有一个重做日志文件组,每个文件组下至少有2个重做日志文件,如默认的ib_logfile0、ib_logfile1。InnoDB存储引擎先写重做日志文件1,当达到文件的最后时,会切换至重做日志文件2,当重做日志文件2也被写满时,会再被切换到重做日志文件1中。影响重做日志的参数:Innodb_log_file_size、innodb_log_files_in_group、innodb_
阅读全文
摘要:二进制日志记录了所有对数据库执行更改的操作,二进制主要有以下两种作用:1、恢复(recovery)2、复制(replication)二进制日志的启动:配置参数log-bin[=name],如果不指定name,则默认二进制日志文件名为主机名,后缀名为二级制日志的序列号,所在路径为数据库所在目录。以index为后缀的文件为二进制日志的索引文件,用来存储过往生产的二进制日志。和二进制日志相关的参数:max_binlog_size、binlog_cache_size、sync_binlog、binlog-do-db、binlog-ignore-db、log-slave-update、binlog_fo
阅读全文
摘要:Mysql数据库的文件包括:1、参数文件:my.cnf2、日志文件,包括错误日志、查询日志、慢查询日志、二进制日志3、Mysql表文件:用来存放mysql表结构的文件,一般以.frm为后缀4、Socket文件:当用unix域套接字方式进行连接时需要的文件5、Pid文件:mysql实例的进程ID文件6、存储引擎文件:每个存储引擎都有自己的文件夹来保存各种数据,这些存储引擎真正存储了数据和索引等数据。参数文件可以通过命令行“mysql--help|grepmy.cnf”查看my.cnf文件的位置;Mysql在启动时可以不需要参数文件,但是如果在默认的数据库目录下找不到mysql架构,则启动会失败;
阅读全文
摘要:InnoDB存储引擎的三个关键特性:插入缓冲(insertbuffer)、二次写(doublewrite)、自适应哈希索引(adaptivehashindex)。1、插入缓冲(insertbuffer)的原理: 对于非聚集索引的插入和更新,不是每一次直接插入索引页中,而是首先判断插入的非聚集索引页是否在缓冲池中,如果在,则直接插入,否则,先放入一个插入缓冲区中。好似欺骗数据库这个非聚集的索引已经插入到叶子节点了,然后再以一定的频率执行插入缓冲和非聚集索引页子节点的合并操作,这时通常能将多个插入合并到一个操作中,这就大大提高了对非聚集索引执行插入和修改操作的性能。 插入缓冲使用的条件: 1...
阅读全文
摘要:InnoDB体系结构如下:后台线程:1、后台线程的主要作用是负责刷新内存池中的数据,保证缓冲池中的内存缓存的是最近的数据;2、另外,将以修改的数据文件刷新到磁盘文件;3、同时,保证在数据库发生异常的情况下,InnoDB能恢复到正常运行状态。内存池:InnoDB有多个内存块,这些内存块组成了一个大的内存池。这些内存块包括有:缓冲池(innodb_buffer_pool)和日志缓冲(log_buffer)以及额外内存池(innodb_addtional_mem_pool_size)。后台线程:后台默认的线程有7个-----4个IOthread,1个masterthread,1个锁监控线程,1个错误
阅读全文
摘要:1、查看数据库服务器状态:statusLinux下的MySQL服务器状态该列表中主要包括MySQL的版本(为version5.1.61)、运行平台(debian-linux-gnu(i686))、数据库连接的ID、当前连接用户、以及连接的方式(本次连接采用UNIXsocket,而未使用SSL)、服务端的字符集、MySQL运行时间和线程、查询、表的一些参数。Windows下的MySQL服务器状态这个是MySQL5.5的版本。2、了解了MySQL的整体状况之后,就需要了解MySQL支持的存储引擎:showengines;在MySQL5.1的版本中,默认支持的是MyISAM引擎。MySQL5.5支持
阅读全文
摘要:从物理意义上来讲,InnoDB表由共享表空间、日志文件组(redo文件组)、表结构定义文件组成。若将innodb_file_per_table设置为on,则系统将为每一个表单独的生成一个table_name.ibd的文件,在此文件中,存储与该表相关的数据、索引、表的内部数据字典信息。表结构文件则以.frm结尾,这与存储引擎无关。 以下为InnoDB的表空间结构图:在InnoDB存储引擎中,默认表空间文件是ibdata1,初始化为10M,且可以扩展,如下图所示: 实际上,InnoDB的表空间文件是可以修改的,使用以下语句就可以修改:Innodb_data_file_path=ibdata...
阅读全文