带你轻松接触Mysql事务和原子操作
2007-10-29 10:59:47 来源:WEB开发网核心提示: 3. 为了安全使用MySQL服务器,无论是否使用事务性表,带你轻松接触Mysql事务和原子操作(2),仅需启用备份和二进制日志功能,这样,可采取下述策略: 1. 使用LOCK TABLES锁定所有希望访问的表, 2. 执行更新前,你就能解决使用其他事务性数据库系统时遇到的任何问题,无论使用
3. 为了安全使用MySQL服务器,无论是否使用事务性表,仅需启用备份和二进制日志功能。这样,你就能解决使用其他事务性数据库系统时遇到的任何问题。无论使用的数据库系统是什么,启用备份总是个好主意。
事务范型有自己的优点和不足之处。很多用户和应用程序开发人员喜欢这类简单性,在出现问题时或必要时,通过代码解决问题。但是,即使你是原子操作范型的新手,或更熟悉事务,也请考虑非事务性表的速度益处,与经过优化调整的最快的事务性表相比,它的速度快3~5倍。
在完整性具有最高重要性的情况下,即使是对非事务性表,MySQL也能提供事务级别的可靠性和安全性。如果使用LOCK TABLES锁定了表,所有更新均将被暂时中止直至完整性检查完成。如果你获得了对某一表的READ LOCAL锁定(与写锁定相对),该表允许在表尾执行并行插入,当其他客户端执行插入操作时,允许执行读操作。新插入的记录不会被有读锁定属性的客户端看到,直至解除了该锁定为止。使用INSERT DELAYED,能够将插入项置于本地队列中,直至锁定解除,不会让客户端等待插入完成。
从我们赋与其名称的意义上,“原子”绝非不可思议的。它仅意味着,你能确信在每个特性更新运行的同时,其他用户不能干涉它,而且不会出现自动回滚(如果你不小心,对于事务性表,这种情况可能发生)。MySQL服务器还能保证不存在脏读。
下面列出了使用非事务性表的一些技术:
· 对于需要事务的循环,通常能使用LOCK TABLES进行编码,不需要光标来更新正在处理的记录。
· 要想避免使用ROLLBACK,可采取下述策略:
1. 使用LOCK TABLES锁定所有希望访问的表。
2. 执行更新前,测试必须为真的条件。
更多精彩
赞助商链接