mysql使用中应该避免的两个问题
2013-09-25 18:32
267 查看
1、非必要的时候避免使用事务,高并发的时候事务会成为瓶颈,出现大量慢查询
2、在超过一个索引的表上,不要使用INSERT...ON DUPLICATE KEY UPDATE,并发执行存在安全隐患.
关于事务的一点资料
常用表引擎:
Myisam:批量插入数据快,不支持事务,锁表
Innodb:批量插入速度相对较慢,支持事务,锁行
事务:
原子性:通俗而言,指一组操作,要么都成功执行,要么都不执行
隔离性:在所有操作没有执行完毕之前,其他会话不能看到中间改变的过程,简单点说就没有真的操作库.
一致性:事务发生前和发生后,数据的总额匹配
持久性:事务产生的影响不能够撤销,如果出现了错误,也不能撤销事务,只能通过“补偿性事务”
简称事务的ACID特性
开启事务:start transaction;
执行sql1....
执行sql2....
commint 提交
rollback回滚
注::当一个事物提交或者回滚后,代表事务已结束;
有一些语句会造成事务隐式地提交:ALTER FUNCTION, ALTER PROCEDURE, ALTER TABLE, BEGIN, CREATE DATABASE, CREATE FUNCTION, CREATE INDEX, CREATE PROCEDURE, CREATE TABLE, DROP DATABASE, DROP FUNCTION, DROP INDEX, DROP PROCEDURE, DROP TABLE, LOAD MASTER DATA, LOCK TABLES, RENAME
TABLE, SET AUTOCOMMIT=1, START TRANSACTION, TRUNCATE TABLE, UNLOCK TABLES
2、在超过一个索引的表上,不要使用INSERT...ON DUPLICATE KEY UPDATE,并发执行存在安全隐患.
关于事务的一点资料
常用表引擎:
Myisam:批量插入数据快,不支持事务,锁表
Innodb:批量插入速度相对较慢,支持事务,锁行
事务:
原子性:通俗而言,指一组操作,要么都成功执行,要么都不执行
隔离性:在所有操作没有执行完毕之前,其他会话不能看到中间改变的过程,简单点说就没有真的操作库.
一致性:事务发生前和发生后,数据的总额匹配
持久性:事务产生的影响不能够撤销,如果出现了错误,也不能撤销事务,只能通过“补偿性事务”
简称事务的ACID特性
开启事务:start transaction;
执行sql1....
执行sql2....
commint 提交
rollback回滚
注::当一个事物提交或者回滚后,代表事务已结束;
有一些语句会造成事务隐式地提交:ALTER FUNCTION, ALTER PROCEDURE, ALTER TABLE, BEGIN, CREATE DATABASE, CREATE FUNCTION, CREATE INDEX, CREATE PROCEDURE, CREATE TABLE, DROP DATABASE, DROP FUNCTION, DROP INDEX, DROP PROCEDURE, DROP TABLE, LOAD MASTER DATA, LOCK TABLES, RENAME
TABLE, SET AUTOCOMMIT=1, START TRANSACTION, TRUNCATE TABLE, UNLOCK TABLES
相关文章推荐
- mysql存储过程中两个CURSOR嵌套使用遇到的有关问题
- Lua的迭代器使用中应该避免的问题和技巧
- Mysql学习总结(31)——MySql使用建议,尽量避免这些问题
- mysql使用建议,尽量避免这些问题
- Mysql学习总结(31)——MySql使用建议,尽量避免这些问题
- mysql使用建议,尽量避免这些问题
- 在MySQL中使用通配符时应该注意的问题
- 在MySQL中使用通配符时应该注意的问题
- mysql使用建议,尽量避免这些问题
- Android开发中使用static变量应该注意的问题
- QT使用MySql的配置(使用addLibraryPath载入插件),编译QT的MySql驱动问题及解决方案(自己使用libmysql.lib进行编译mysql.pro,万不得已可以查看Makefile.Debug以解决问题)
- 使用PDO查询Mysql来避免SQL注入风险
- mysql使用source 命令后表内中文乱码问题的解决方法
- ubuntu下Vi使用的两个小问题
- iOS小问题--使用NSPredicate比较两个数组中相同(不同)的元素
- [Android]使用 Eclipse 给 APK 签名时遇到的两个问题及解决办法
- DHCP实际使用两个问题的解决办法及实验验证
- 避免mysql注入应该避免特殊字符
- 使用c3p0与DBCP连接池,造成的MySql 8小时问题解决方案
- [ERROR] Mysql 使用LongText 出现内容截断 问题