MySQL香港服务器中的事物与事务日志

作者:港云互联 时间:2019-09-20


事务日志



        事务日志可以帮助提高事务的效率。使用事务日志,存储引擎在修改表的数据时只需要 修改其内存拷贝,再把该修改行为记录到持久在硬盘上的事务日志中,而不用每次都将修改的数据本身持久到磁盘。事务日志采用的是追加的方式,因此写日志的操作是磁盘上一小块区域内的顺序I/O,而不像随机I/O需要在磁盘的多个地方移动磁头,所以采用事务日志的方式相对来说要快得多。事务日志持久以后,内存中被修改的数据在后台可以慢慢地刷回到磁盘。目前大多数存储引擎都是这样实现的,我们通常称之为预写式曰志(Write-Ahead Logging),修改数据需要写两次磁盘。



        如果数据的修改已经记录到事务日志并持久化,但数据本身还没有写回磁盘,此时系统崩溃,存储引擎在重启时能够自动恢复这部分修改的数据。具体的恢复方式则视存储 擎而定。

香港服务器


MySQL香港服务器中的事务



        MySQL提供了两种事务型的存储引擎:innoDB和NDB Cluster。另外还有一些第三方存储引擎也支持事务,比较知名的包括XtraDB和PBXT。后面将详细讨论它们各自的 一些特点。



自动提交(AUTOCOMMIT)


        MySQL香港服务器默认采用自动提交(AUT0C0MMIT)模式。也就是说,如果不是显式地开始一 个事务,则每个查询都被当作一个事务执行提交操作。在当前连接中,可以通过设置 /u/rocomiT变量来启用或者禁用自动提交模式:



mysql> SHOW VARIABLES LIKE 'AUTOCOmiT';


Variable_name
Value
autocommit
ON



1  row in set (0.00 sec)

mysql> SET AUTOCOWIT = 1;


        1或者ON表示启用,0或者OFF表示禁用。当AUTOCOft1IT=0时,所有的査询都是在一个 事务中,直到显式地执行COMMIT提交或者ROLLBACK回滚,该事务结束,同时又开始了另一个新事务。修改AUTOCOMMIT对非事务型的表,比如MylSAM或者内存表,不会有任何影响。对这类表来说,没有COMMIT或者ROLLBACK的概念,也可以说是相当于一直 处于AUT0C0MMIT启用的模式。


        另外还有一些命令,在执行之前会强制执行COMMIT提交当前的活动事务。典型的例子,在数据定义语言(DDL)中,如果是会导致大量数据改变的操作,比如ALTER TABLE,就是如此。另外还有LOCK TABLES等其他语句也会导致同样的结果。如果有需要,请检査对应版本的官方文档来确认所有可能导致自动提交的语句列表。


        MySQL香港服务器可以通过执行SET TRANSACTION ISOLATION LEVEL命令来设置隔离级别。新的隔离级别会在下一个事务开始的时候生效。可以在配置文件中设置整个数据库的隔离级別,也可以只改变当前会话的隔离级别:


        mysql> SET SESSION TRANSACTION ISOLATION LEVEL READ COMMITTED;


        MySQL香港服务器能够识别所有的4个ANSI隔离级别,InnoDB引擎也支持所有的隔离级别。


        后面港云互联接着为大家讲解MySQL香港服务器在事物中混合使用存储引擎。





新人注册,即送价值满880元现金劵

立即注册>>
客服 电话 反馈 活动 回顶部

服务热线

+852-5764-9835

1对1贴心服务,7X24小时热线