本文共 1616 字,大约阅读时间需要 5 分钟。
二十六 管理事务处理
1.并非所有引擎都支持事务处理,如MyIASM和InnoDB,关于事务处理的几个术语:
事务(Transaction)指一组sql语句;回退(rollback)指撤销指定SQL语句的过程;提交(commit)指将为存储的SQL语句结果写入数据库表;保留点(savepoint)指事务处理中设置的临时占位符(placeholder),可以对它发布回退。 2.管理事务处理的关键在于将SQL语句组分解为逻辑块,并明确规定数据何时应该回退,何时不应该回退。 3.MySQL使用如下标志事务的开始:START TRANSACTION ROLLBACK用来回退MySQL语句。 如:SELECT * FROM ordertotals;//显示该表不为空START TRANSACTION;//开始事务DELETE FROM ordertotals;//删除全部数据ROLLBACK;//回退SELECT * FROM ordertotals;//显示该表不空
事务处理用来管理INSERT/UPDATE/DELETE语句,不能回退CREATE/DROP操作,当然还有SELECT;
4.使用COMMIT,一般的MySQL语句都是直接针对数据库表执行和编写的,即所谓的隐含提交(implicit commit), 提交操作室自动的。在事务处理中,提交不会隐含的进行。 如:START TRANSACTION;DELETE FROM orderitems WHERE order=20010;DELETE FROM orders WHERE order_num=20010;commit;
注意“隐含事务关闭”。
5.使用保留点。 如:SAVEPOINT delete1; ROLLBACK TO delete1; 保留点越多越好,在事务处理完成后保留点可以自动释放。 6.更改默认的提交行为。为了使MySQL不自动提交更改, 可以:SET autocommit=0;//直到被重新设置为真为止。
注意 autocommit 标志是针对每个连接而不是服务器的。
三十 改善性能
1.遵循MySQL的硬件建议;
2.使用过程中可能需要调优,查看当前设置,可以使用SHOW VARIABLES;SHOW STATUS等; 3.MySQL是一个对用户多线程的DBMS,如果多任务中的某一个执行缓慢,会影响所有请求的执行,SHOW PROCESSLIST;
可以显示所有活动进程,进而执行KILL操作;
4.总是有不止一种方法编写同一条SELECT语句; 5.使用EXPLAIN语句让MySQL解释如何执行一条SQL语句; 6.一般来说,存储过程要比执行独立的各条SQL语句要快; 7.应该总是使用正确的数据类型;绝不要检索必需求还多的数据。换言之,不要使用select *(除非你真正需要某个列); 8.某些操作支持可选的DELAYED关键字,如果使用它,将把控制立即返回给调用程序,并且一旦有可能就实际执行该操作,即延迟插入; 9.在导入数据时,应该关闭自动提交。也可以删除索引,在导入完成后再重建; 10.必须索引数据库表以改善数据检索的性能。如果一个简单的WHERE子句返回结果的时间过长,则可以断定其中几个列是需要索引的对象; 11.SELECT不应该使用过多的OR条件,使用UNION连接子句代替,会看到极大的性能改善; 12.索引改善数据检索的性能,但损害数据插入、删除和更新的性能。如果某些表收集数据但是不经常被检索,在这之前不应该索引它们; 13.LIKE很慢,最好使用FULLTEXT代替; 14.最重要的规则是,每条规则在某些条件下都会被打破。本文转自邴越博客园博客,原文链接:http://www.cnblogs.com/binyue/p/3721246.html,如需转载请自行联系原作者