MySql(一)架构
一、MySql架构逻辑
1.连接管理和安全性
2.优化与执行
二、并发控制
服务器层和存储引擎层
1.读锁和写锁 Read Lock and Write Lock
共享锁(Shared Lock)和排他锁(Exclusive Lock) 或者读锁(Read Lock) 和写锁(Write Lock)
2.锁粒度(Lock Granularity)
表锁(Table lock)
行级锁(Row locks)
三、事务
ACID 原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)、持久性(Durability)
1.隔离级
READ UNCOMMITTED(读取未提交内容)
READ COMMITTED(读取提交内容) sqlServer默认
REPEATABLE READ(可重读) Mysql默认
SERIALIZABLE(可串行化)
2.死锁
3.事务日志
预写式日志(Write-Ahead logging)
4.Mysql中的事务
MysqlAB提供3个事务型存储引擎:InnoDB、NDB CLuster和Falcon,还有介个第三方引擎也支持事务处理,目前最知名的第三方事务性引擎是solidDB和PBXT
AUTOCOMMIT(自动提交)---Mysql默认操作模式是autocommit模式,这意味着除非显式的开始一个事务,否则它将把每个查询视为一个单独事务自动执行,在当前连接中,可以通过变量设置,启用(Enable)和禁用(Disable)AUTOCOMMIT模式。对于非事务型的表,如MyISAM表或内存表(Memory Table)改变AUTOCOMMIT的值没有意义,这些表本质上一直操作在AUTOCOMMIT模式。
在事务中混合使用存储引擎
隐式和显式锁定
四、多版本并发控制 MVCC---Multiversion Concurrency Control
五、Mysql的存储引擎
在windows平台上,Mysql的实例名、表名、数据库名都是大小写不敏感的;在Unix类平台上则是大小写敏感的,每种存储引擎对表数据和索引的存储方式是不同的,但是表的定义是由Mysql服务器独立处理的。
1.MyISAM引擎 --- Mysql默认的存储引擎
一般来说MyISAM将每个表存储为2个文件:数据文件.MYD和索引文件.MYI
show table status like 'mytable' \G;
check table mytable ;
repair table mytable ;
当服务器离线时 myisamchk命令行工具检查和修复表;myisampack压缩;
2.MyISAM MERGE引擎
3.InnoDB 引擎 ---专为事务处理设计的一款存储引擎
4.Memory引擎
5.Archive引擎
6.CSV引擎
7.Federated引擎
8.Blackhole引擎
9.NDB Cluster引擎
10.Falcon引擎
11.solidDB引擎
12.PBXT引擎
13.Maria引擎
14.其他的存储引擎
15.选择合适的引擎
16.表转换
ALTER TABLE MYTABLE ENGINE=myisam
这种语法适合所有的存储引擎,但是这种转换过程会耗费大量的时间。MySql为此要执行一个旧表到新表的逐行复制(Row-By-Row Copy),在这期间,转换操作可能会占用服务器的所有的I/O处理能力,并且在转换时,源表要被读加锁(Read-Locked)。因此在一个繁忙的表上做此操作,要加以注意,作为替代手段,可以使用下面的方法:
转储(Dump)和导入(Import)
如果想对表转换的过程做更多控制,可以选择使用MySqldump工具,将表先转储成一个文本文件,然后再编辑转储文件(Dump File),
CREATE 和SELECT
先复制表结构,然后增量复制表数据,每个增量复制完成即提交整个事务。