文档章节

InnoDB Read-Only Transactions_只读事务

秋风醉了
 秋风醉了
发布于 2014/11/10 16:46
字数 366
阅读 102
收藏 0

InnoDB Read-Only Transactions_只读事务

官方文档:http://dev.mysql.com/doc/refman/5.6/en/innodb-performance-ro-txn.html


As of(自从) MySQL 5.6.4, InnoDB can avoid the overhead associated with setting up the transaction ID (TRX_ID field) for transactions that are known to be read-only. A transaction ID is only needed for a transaction that might perform write operations or locking reads such as SELECT ... FOR UPDATE. Eliminating(排除) unnecessary transaction IDs(不必要的transaction id) reduces(降低) the size of internal data structures that are consulted(商量,顾及) each time a query or DML(数据操纵语言) statement constructs a read view. 


Currently, InnoDB detects(发现,发觉) read-only transactions when:

  • The transaction is started with the START TRANSACTION READ ONLY statement.  In this case, attempting to make changes to the database (for InnoDB, MyISAM, or other types of tables) causes an error, and the transaction continues in read-only state: 

    ERROR 1792 (25006): Cannot execute statement in a READ ONLY transaction.

    You can still make changes to session-specific temporary(临时的) tables in a read-only transaction, or issue locking queries for them, because those changes and locks are not visible to any other transaction.

  • The autocommit setting is turned on(打开), so that the transaction is guaranteed to be a single statement, and the single statement making up the transaction is a “non-locking” SELECT statement. That is, a SELECT that does not use a FOR UPDATE or LOCK IN SHARED MODE clause. 


InnoDB默认的read only有两种方式:

  • The transaction is started with the START TRANSACTION READ ONLY statement.

  • The autocommit setting is turned on(打开). 


Thus, for a read-intensive(加强的,强烈的) application such as a report generator, you can tune (调整使协调)a sequence of InnoDB queries by grouping them inside START TRANSACTION READ ONLY and COMMIT, or by turning on the autocommit setting before running the SELECT statements, or simply by avoiding any DML statements interspersed(散开的) with the queries. 


==================END==================


© 著作权归作者所有

共有 人打赏支持
秋风醉了
粉丝 239
博文 572
码字总数 416654
作品 0
朝阳
程序员
私信 提问
MYSQL之一步到位之InnoDB

快速认识InnoDB InnoDB是MySQL下使用最广泛的引擎,它是基于MySQL的高可扩展性和高性能存储引擎,从5.5版本开始,它已经成为了默认引擎。 InnODB引擎支持众多特性: a) 支持ACID,简单地说就...

SANSOM
2013/04/23
0
1
Transaction Access Mode_READ WRITE | READ ONLY

Transaction Access ModeREAD WRITE | READ ONLY msyql官方手册 http://dev.mysql.com/doc/refman/5.6/en/set-transaction.html Transaction Access Mode As of MySQL 5.6.5, the transacti......

秋风醉了
2014/11/10
0
0
InnoDB 隔离模式对 MySQL 性能的影响

过去的几个月我写了两篇文章,一篇是InnoDB 事务历史相关的危险债务,另一篇是关于MVCC 可能导致MySQL严重的性能问题的真相。在这篇文章里我将讨论一个相关的主题 – InnoDB 事务隔离模式,还...

oschina
2015/02/04
6.1K
16
MySQL备份工具——Xtrabackup之简介

MySQL备份工具——Xtrabackup之简介 一、简介 1、xtrabackup是percona公司开发的一款基于MySQL的开源备份工具,且优于ibbackup。 2、xtradb存储引擎也是percona公司为MySQL开发的,是InnoDB的...

perofu
2014/12/05
0
0
4种事务的隔离级别,InnoDB如何巧妙实现?

事务ACID特性,其中I代表隔离性(Isolation)。 什么是事务的隔离性? 隔离性是指,多个用户的并发事务访问同一个数据库时,一个用户的事务不应该被其他用户的事务干扰,多个并发事务之间要相互...

大数据之路
2012/09/03
0
1

没有更多内容

加载失败,请刷新页面

加载更多

中国龙-扬科
31分钟前
2
0
使用vuex的state状态对象的5种方式

vuex是一个专门为vue.js设计的状态管理模式,并且也可以使用devtools进行调试。 下面给大家来贴一下我的vuex的结构 下面是store文件夹下的state.js和index.js内容 //state.jsconst state =...

peakedness丶
34分钟前
2
0
NetCore MVC Demo

地址:http://114.116.9.72:5411

whltian
42分钟前
3
0
Netty handle方法周期 (四)

写了一个练习之后,发现自定义的助手类每次肯定是必须的,对于不同的业务逻辑需求,会写相对应的逻辑 最简单的查看Handle生命周期的方式,就是重写上级方法,看名字差不多应该可以知道方法的作用 ...

_大侠__
47分钟前
9
0
vue主动刷新页面及列表数据删除后的刷新实例

1.场景 在处理列表时,常常有删除一条数据或者新增数据之后需要重新刷新当前页面的需求。 2.遇到的问题 1. 用vue-router重新路由到当前页面,页面是不进行刷新的 2.采用window.reload(),或者...

前端小攻略
57分钟前
16
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部