Refresh-air

清风明月本无价 近水远山皆有情
记载自己在码砖过程中遇到的点点滴滴.......

 

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

MR`79{Y7]}{TA{72[0MLBA5

 

五、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

先复制表结构,然后增量复制表数据,每个增量复制完成即提交整个事务。

posted on 2010-09-29 16:09  笑清风  阅读(350)  评论(0编辑  收藏  举报

导航