Welcome

首页 / 数据库 / MySQL / mysql dba系统学习(22)数据库事务详解

mysql dba系统学习(22)数据库事务详解2014-06-25上个星期去面试数据库管理员的工作,笔试通过之后就是直接的面试,他问了我一个问题,叫我介绍哈数据库的事务的看法和理解,但是不知所错的没有章法的乱答一气,唉唉,基础不扎实啊。

下面来好好的学习哈mysqlinnodb引擎的事务相关的知识

一,我们为什么需要数据库事务呢?

这个问题看似很简单,但是真的能够说明白还是要看看我们的基本功是不是扎实

例如,用户A给用户B通过ATM机转账1000元,那么A账户上就会少1000元,而B用户会多1000元

在这个过程中,两个环节是关联的。第一个账户划出款项必须保证正确的存入第二个账户,如果第二个环节没有完成,整个的过程都应该取消,否则就会发生丢失款项的问题。整个交易过程,可以看作是一个事物,成功则全部成功,失败则需要全部撤消,这样可以避免当操作的中间环节出现问题时,产生数据不一致的问题。

二,数据库事务的特点

原子性

事务必须是原子工作单元;对于其数据修改,要么全都执行,要么全都不执行。

一致性

事务在完成时,必须使所有的数据都保持一致状态。在相关数据库中,所有规则都必须应用于事务的修改,以保持所有数据的完整性。

事务结束时,所有的内部数据结构(如 B 树索引或双向链表)都必须是正确的。

隔离性

由发并事务所作的修改必须与任何其它并发事务所作的修改隔离。事务查看数据时数据所处的状态,要么是另一并发事务修改它之前的状态,

要么是另一事务修改它之后的状态,事务不会查看中间状态的数据。这称为可串行性,因为它能够重新装载起始数据,并且重播一系列事务,

以使数据结束时的状态与原始事务执行的状态相同。

持久性

事务完成之后,它对于系统的影响是永久性的。该修改即使出现系统故障也将一直保持。

三、如何在MYSQL 中使用事务

1、mysql什么引擎可以使用事务

只有InnoDB /BDB 的之类的transaction_safe table 才能支持。

首先需要你的mysql支持innodb引擎,查看你的mysql支持的引擎的语法为:

mysql> show enginesG;*************************** 1. row ***************************Engine: ndbcluster Support: NO Comment: Clustered, fault-tolerant tablesTransactions: NULLXA: NULLSavepoints: NULL*************************** 2. row ***************************Engine: MRG_MYISAM Support: YES Comment: Collection of identical MyISAM tablesTransactions: NOXA: NOSavepoints: NO*************************** 3. row ***************************Engine: BLACKHOLE Support: YES Comment: /dev/null storage engine (anything you write to it disappears)Transactions: NOXA: NOSavepoints: NO*************************** 4. row ***************************Engine: FEDERATED Support: NO Comment: Federated MySQL storage engineTransactions: NULLXA: NULLSavepoints: NULL*************************** 5. row ***************************Engine: MEMORY Support: YES Comment: Hash based, stored in memory, useful for temporary tablesTransactions: NOXA: NOSavepoints: NO*************************** 6. row ***************************Engine: InnoDB Support: YES Comment: Supports transactions, row-level locking, and foreign keysTransactions: YESXA: YESSavepoints: YES*************************** 7. row ***************************Engine: MyISAM Support: DEFAULT Comment: Default engine as of MySQL 3.23 with great performanceTransactions: NOXA: NOSavepoints: NO*************************** 8. row ***************************Engine: CSV Support: YES Comment: CSV storage engineTransactions: NOXA: NOSavepoints: NO8 rows in set (0.00 sec)ERROR:No query specified