在MySQL 的MyISAM类型数据表中,并不支持COMMIT(提交)和ROLLBACK(回滚)命令。当用户对数据库执行插入、删除、更新等操做时,这些变化的数据都被马上保存在磁盘中。这样,在多用户环境中,会致使诸多问题,为了不同一时间有多个用户对数据库中指定表进行操做。能够应用表锁定来避免在用户操做数据表过程当中受到干扰。当且仅当该用户释放表的操做锁定后,其余用户才能够访问这些修改后的数据表。数据库
实现伪事务的通常步骤以下:
对数据库中的数据表进行锁定操做,能够对多个表作不一样的方式锁定
执行数据库操做,向锁定的数据表中执行添加、删除、修改操等操做
释放锁定的数据表,以便让正在队列中等待查看或操做的其余用户能够浏览数据表中的数据或对操做表执行各类数据的操做。安全
应用不一样孤立级的事务可能会对系统形成一系列影响,采用不一样孤立级处理事务,可能会对系统稳定性和安全性等诸多因素形成影响。另外,有些数据库操做中,不须要应用事务处理,则用户在选择数据表类型时,须要选择合适的数据表类型。因此,在选择表类型时,应该考虑数据表具备完善的功能,且高效的执行前提下,也不会对系统增长额外的负担。服务器
应用小事务的意义在于:保证每一个事务不会在执行前等待很长时间,从而避免各个事务由于互相等待而致使系统的性能大幅度降低。ide
由于事务的性能与其对服务器产生的负载成反比,即当事务孤立级越高,其性能越低,可是其安全性也越高。性能
死锁,即当两个或者多个处于不一样序列的用户打算同时更新某相同的数据库时,因互相等待对方释放权限而致使双方一直处于等待状态。blog