MySql性能相关的一些概念(性能tip0)

题首:这是最近读《高性能MySqL 第二版》记录下来的东西~

#读锁(共享锁)、写锁(排他锁):读锁是共享的,互不阻塞,读取同一资源互不影响;写锁排他,一个写锁会阻塞其他的读写操作。

#锁定对象的粒度:表锁和行锁。

表锁:整个表加锁,当写操作时,加写锁,资源访问排他。当没有写时,加读锁,读锁互不冲突。写锁比读锁有高优先级。开销较小。

行级锁:对一行加锁,开销大,支持最大并发处理。

#事务:ACID

A原子性:一个事务是一个原子不可分的工作单元,内部的工作不会被部分执行,要么全部执行,要么根本不执行

C一致性:数据库从一种一致状态转到另一种一致状态,事务执行过程中的数据改变不会影响数据库数据。

I 隔离性:某个事务的结果只有在事务完成后才对其他事务可见。

D持久性:一个事务提交后的结果改变将是持久的,不会马上消失。

#MVCC:多版本并发控制

#几个存储引擎:

MyISAM:加表锁,在select查询时可以在同一张表完成插入(并发插入),可以基于BLOB和TEXT的前500字符进行相关索引。

InnoDB:事务引擎,适合处理大量短期事务,基于聚簇索引,不压缩索引

Memory:基于堆的,内存存储,支持哈希索引

Archive:只支持insert和select,不支持索引,缓冲了数据写操作,插入时使用zlib算法压缩,比MyISAM磁盘IO消耗少,所有 的select查询执行全表扫描,适合logging,支持行级锁。

存储引擎MySqL版本事务锁粒度主要应用忌用
MyISAM全部不支持支持并发插入的表锁select,insert,高负载读写并重的场合
MyISAM Merge全部不支持支持并发插入的表锁分段归档,数据仓库许多全局查找
Memory(Heap)全部不支持表锁中间计算,静态数据查找大型数据集,持久性存储
InnoDB全部支持支持MVCC的行级锁事务处理
Falcon6.0支持支持MVCC的行级锁事务处理
Archive4.1支持支持MVCC的行级锁日志记录,聚合分析需要随机读取、更新、删除
CSV4.1不支持表锁日志记录,大规模加载外部数据需要随机读取、索引
Blackhole4.1支持支持MVCC的行级锁日志记录或同步归档除非有特别目的,否则不适合任何场合
Federated5.0N/AN/A分布式数据源除非有特别目的,否则不适合任何场合
NDB Cluster5.0支持行级锁高可靠性大部分典型应用
PBXT5.0支持支持MVCC的行级锁事务处理,日志记录需要聚集索引
SolidDB5.0支持支持MVCC的行级锁事务处理
Maria

posted @ 2012-02-08 10:37  swjm119  阅读(402)  评论(0编辑  收藏  举报