标签:blog 使用 io 数据 for art ar cti
InnoDB存储引擎可以避免read-only的事务写transaction id(trx_id属性)的开销。transaction id只有在一个事务
中有写操作或者上了写锁的事务(比如select ...for update)中才需要.不写transaction id能大大降低MySQL查询或者DML
语句建立快照的数据结构的大小。
现阶段,InnoDB在如下情况下会检测到只读事务:
MyISAM或者其他类型)就会报错。但是在这种情况下仍然可以修改跟session相关的临时表或者为这些临时表上锁
,因为这些修改或者锁对其他事务是不可见的。
mysql> start transaction read only; Query OK, 0 rows affected (0.00 sec) mysql> insert into innodb(name) value ("read-only"); ERROR 1792 (25006): Cannot execute statement in a READ ONLY transaction.
因此,对于读密集型的应用(比如报表生成),可以通过把一系列查询语句放到start transaction read only和commit之间。或者
把autocommit配置打开。或者可以简单的通过不要在查询语句中间穿插dml语句来提高性能。
标签:blog 使用 io 数据 for art ar cti
原文地址:http://www.cnblogs.com/sysman/p/3902851.html