MySQL事务原子性保证事务原子性要求事务中的一系列操作要么全部完成,要么不做任何操作,不能只做一半。原子性对于原子操作很容易实现,就像HBase中行级事务的原子性实现就比较简单。但对于多条语句组成的事务来说,如果事务执行过程中发生异常,需要保证原子性就只能回滚,回滚到事务开始前的状态,就像这个事务根本没有发生过一样。如何实现呢?MySQL实现回滚操作完全依赖于undo log,多说一句,und。
在MySQL命令行的默认设置下,事务都是自动提交的,即执行SQL语句后就会马上执行COMMIT操作。因此要显式地开启一个事务需要使用命令BEGIN, START TRANSACTION, 或者执行命令SET AUTOCOMMIT=0, 禁用当前会话的自动提交。每个数据库厂商自动提交的设置都会不相同,每个DBA或开发人员需要非常明白这一点,这对之后的SQL编程会有非凡的意义,因此用户不能以之前的经。
概述索引是MySQL的核心技术之一,从不同的角度可以将索引分成多类。从存储结构上分,可以将索引分为聚集索引和非聚集索引。从实现的数据结构上分,可以将索引分为B-Tree索引,哈希索引,全文索引,R-Tree索引等。从查询优化的角度,还有覆盖索引。本文将从下面几个方面逐步展开来研究MySQL的索引:1,从数据结构和算法理论层面,研究MySQL数据库索引的逻辑基础。2,从物理存储层面,研究MySQL。