您的位置:首页 > 数据库 > MariaDB

Innodb事务存储引擎分析

2015-03-19 10:51 204 查看
1,什么是存储引擎 存储引擎说白了就是如何存储数据,如何为存储的数据建立索引和如何更新,查询数据等技术的实现方法。因为在关系数据库中数据的存储是以表的形式存储的,所以存储引擎也可以成为表类型。在Oracle和SQL Server等数据库中只有一个存储引擎,所有的数据存储管理机制都是一样的。MySQL数据库提供了多种存储引擎,用户可以根据不同的需求为数据库表选择不同的存储引擎,也可以根据自己的需要编写自己的存储引擎。
2,如何选择存储引擎:InnoDB存储引擎:用于事务处理应用程序,具有众多特性MyISAM存储引擎:主要用于管理费事务表,它提供高速存储和检索,以及全文搜索能力...
这边我们来谈谈Innodb的事务特性,Innodb是MySQL中少有支持事务的存储引擎。
3.满足如下的要求称之为事务(transaction): ACID: 一致性,持久性,原子性,隔离性

1、原子性(atomicity)原子性是指整个数据库事务是不可分割的工作单位2、一致性(consistency)一致性指事务将数据库从一种状态转变为下一种一致的状态。在事务开始之前和事务结束之后,数据库的完整性约束没有被破坏。例如:存入3k,另外扣掉3k3、隔离性(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)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  mysql 事务 Innodb mariadb