mysql使用中应该避免的两个问题

来源:互联网 发布:linux系统支持的游戏 编辑:程序博客网 时间:2024/05/01 10:40

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

原创粉丝点击