事务和ACID属性
ACID是一个简称,指出每个事务型RDBMS必须遵循的4个属性。为了验证是否满足ACID,一个RDBMS必须具有下面的特征:原子性,一致性,孤立性和持久性。
原子性:
意味着每个事务都必须被认为是一个不可分割的单元。假设一个事务由两个或者多个任务组成,其中的语句必须同时成功才能认为事务是成功的。如果事务失败,系统将会返回到事务以前的状态
一致性
不管事务是完全成功完成还是中途失败,当事务使系统处于一致的状态时存在一致性。在mysql中,一致性主要由mysql的日志机制处理,它记录了数据库的所有变化,为事务恢复提供了跟踪记录。如果系统在事务处理中间发生错误,mysql恢复过程将使用这些日志来发现事务是否已经完全成功地执行,是否需要返回,因而一致性属性保证了数据库从不返回一个未处理完的事务。
孤立性
孤立性是指每个事务在它自己的空间发生,和其他发生在系统中的事务隔离,而且事务的结果只有在它完全被执行时才能看到。即使在这样的一个系统中同时发生了多个事务,孤立性原则保证某个特定事务在完全完成之前,其结果是看不见的。
持久性
持久性是指即使系统崩溃,一个提交的事务仍在坚持。当一个事务完成,数据库的日志已经被更新时,持久性就开始发生作用。大多数RDBMS产品通过保存所有行为的日志来保证数据的持久性,这些行为是指在数据库中以任何方法更改数据。数据库日志记录了所有对于表的更新,查询,报表等。
如果系统崩溃或者数据存储介质被破坏,通过使用日志,系统能够恢复在重启钱进行的最后一次成功的更新,反映了在崩溃时处于执行过程的事务的变化。
mysql通过保存一条记录事务过程中系统变化的二进制事务日志文件来实现持久性。
事物的生命周期
为了初始化一个事务,并告诉mysql所有随后的sql语句需要被认为是一个单元,mysql提供了start transaction 命令来标记一个事务的开始
一旦sql语句被执行,我们可以使用commit命令把整个事务保存在磁盘上,或者使用rollback命令撤销所有的变化。
commit命令标记了事务块的结束。一旦事务交给了数据库,提交的数据对其他客户会话是可见的。
mysql的发布版本包括了一个命令行工具,专门用于帮助管理员执行常规任务,如修改mysql管理员口令或者重新安装mysql权限等,这个工具称为mysqladmin,可以在mysql安装的bin目录下找到。(我的是ubuntu14.04,安装目录在/usr/bin)
mysqladmin 支持如下命令
status 返回服务器状态信息
password 修改用户口令
shutdown 关闭mysql服务
reload 重载mysql授权表
refresh 重置所有高速缓存和日志
variables 返回所有服务器的变量值
version 返回服务器版本
processlist 返回服务器上所有进程的列表
kill 取消一个服务器进程
ping 测试服务器是否在活动状态