- join时,以小表驱动大表,并在大表相应字段建索引。
- order by limit offset,大分页优化:
select t.*
from (
select id from tbl order by id desc limit offset,pagesize
)q
join tbl t
on q.id=t.id;
- 存储优化
选择最适合的字段属性。
为字段设置NOT NULL DEFAULT,节省mysql对NULL值的判断。
ip字段映射为long int。
- 查询优化
尽量避免select * 。
尽量使用limit对查询条数进行限制。
拆分大的delete操作,分页delete。
在有索引字段的情况下,查询等尽量使用索引。
- 事务:原子性(要么都做要么都不做)、隔离性(两个事务互不影响)、一致性(数据库要么处于事务提交之前的状态,要么处于事务提交以后的状态)、持久性(事务对数据库的修改是持久化的)
- redo/undo log 原子性和持久性的保证。
- 启用死锁检测选项时,innodb会自动检测死锁并通过回滚事务解决死锁。
- binlog的两个使用场景:a.主从同步;b.mysqlbinlog恢复数据。