一、锁1.1锁分类2.2表锁偏向MyISAM存储引擎,开销小, 加锁快, 无死锁,锁定粒度大, 发生锁冲突的概率最高, 并发最底,整张表就只能一个人使用 查看表锁show open tables; 对表加锁lock table user read, user write; 对表解锁unlock tables 查询表锁查询、等待次数show status like 'table%';
1.3行锁偏向InnoDB存储引擎,开销大, 加锁慢, 会出现死锁;锁定粒度最小, 发生锁冲突的概率最底,并发度也最高。
1.4事务事务是一批操作,要么同时成功,要么同时失败! start transaction开启事务 commit提交事务 rollback回滚事务 savepoint 名字设置回滚点 rollback to 名字回到回滚点
取消自动提交 事务四大特性(ACID) 四种隔离级别和可能出现的问题 隔离级别 读未提交(read uncommitted):所有的事务都可以读到其他事务未提交的执行结果。容易出现脏读。 读已提交(read committed):一个事务只能读到已经提交事务的执行结果。容易出现不可重复读(虚读)。 可重复读(repeatable read):MySQL默认。一个事务前后几次,会得到同样的结果。容易出现幻读。 可串行化(serializable):最高隔离级别。每个读操作上共享锁,写操作上排他锁,容易出现超时,阻塞现象。
脏读、不可重复读(虚读)、幻读
手动加行级锁
1.5悲观锁、乐观锁二、数据库优化2.1MySQL优化综合性技术2.2索引分类2.3MySQL语句正确使用索引全值匹配(最好) 最佳左前缀法则 计算、函数、类型转换会导致索引失效 范围条件查询,右边索引失效 使用不等于(!=或者<>)时无法使用索引 or引起索引失效 like引起索引失效
2.4大批量数据分页操作优化没有优化的查询 优化 使用子查询优化方式1 select * from logs1 e inner join (SELECT id from logs1 limit 500000 ,10 ) et on e.id = et.id使用子查询优化方式2 select * from logs1 where id >=(SELECT id from logs1 limit 500000 , 1) limit 10使用id限定优化
|
|