Innodb事务存储引擎分析

1,什么是存储引擎

            存储引擎说白了就是如何存储数据,如何为存储的数据建立索引和如何更新,查询数据等技术的实现方法。因为在关系数据库中数据的存储是以表的形式存储的,所以存储引擎也可以成为表类型。

在Oracle和SQL Server等数据库中只有一个存储引擎,所有的数据存储管理机制都是一样的。MySQL数据库提供了多种存储引擎,用户可以根据不同的需求为数据库表选择不同的存储引擎,也可以根据自己的需要编写自己的存储引擎。


2,如何选择存储引擎:

InnoDB存储引擎:用于事务处理应用程序,具有众多特性

MyISAM存储引擎:主要用于管理费事务表,它提供高速存储和检索,以及全文搜索能力

...


这边我们来谈谈Innodb的事务特性,Innodb是MySQL中少有支持事务的存储引擎。


3.满足如下的要求称之为事务(transaction):

      ACID:    一致性,持久性,原子性,隔离性

  

1、原子性(atomicity)原子性是指整个数据库事务是不可分割的工作单位

2、一致性(consistency)一致性指事务将数据库从一种状态转变为下一种一致的状态。在事务开始之前和事务结束之后,数据库的完整性约束没有被破坏。例如:存入3k,另外扣掉3k

3、隔离性(isolation一个事务的影响在该事务提交之前对其他事务都不可见------这通过锁来实现

4、持久性(durability)事务一旦提交,其结果就是永久性的


4.MYSQL中autocommit变量值为ON,则表示自动提交事务,每条sql语句就是一个事务,执行完后自动提交,autocommit为OFF,则不自动提交,需要手动提交。

MariaDB [linux]> show variables like ‘autocommit‘;
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| autocommit    | OFF   |
+---------------+-------+
1 row in set (0.00 sec)

事务是有隔离性的,分为4个级别:

    

       1 READ-UNCOMMITTED    //事务中修改数据后但尚未提交,另一个事务就能查询到修改后的结果,可以理解为实时同步的,但是本事务提交后,另一个事务的查询的结果又会跟着同步变化了。

        2READ-COMMITTED        //事务中修改数据后但尚未提交,另一个不能查询修改的数据,只能看到事务前的结果。只有当事务提交了之后,另一个才能看到修改的结果。

        3REPEATABLE-READ        //某一事务中查看到的数据是该事务开始前的数据状态,再未结束本次事务前,其他事务修改的数据不会被显示出来。

        4SERIALIZABLE               //只有当一个事务完成才能执行下一个事务或其他事务,其他的事务会被阻塞


MySQL的隔离级别是通过变量tx_isolation实现的:

MariaDB [linux]> show variables like ‘tx_isolation‘;
+---------------+------------------+
| Variable_name | Value            |
+---------------+------------------+
| tx_isolation  | READ-UNCOMMITTED |
+---------------+------------------+
1 row in set (0.00 sec)

本文出自 “Lu2Yu” 博客,请务必保留此出处http://lu2yu.blog.51cto.com/10009517/1622119

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。