MySQL的优化方法。
数据库中事务的四个特性-ACID
事务是一个操作序列,执行单个逻辑功能的一组指令或操作被称为事务。
- A 原子性 Atomicity - 指事务是一个不可再分割的工作单元,事务中的操作要么都执行,要么都不执行。
- B 一致性 Consistency - 事务的操作不会破坏数据库的数据的完整性以及业务逻辑上的一致性。
- I 隔离性 Isolation - 多个事务并发访问时,每个事务都有自己的数据空间,数据所处于的状态要么是另一个事务修改前的状态,要么是另一个事务修改后的状态,数据不会处于中间状态。
- D 持久性 Durability - 事务完成后对数据的变动是持久保存在数据库中的,不会被回滚。
MySQL的标准执行顺序
从上到下:
FROM
ON
JOIN
WHERE
GROUP BY
WITH
{CUBE|ROLLUP}
HAVING
SELECT
DISTINCT
ORDER BY
LIMIT
MySQL引擎MyISAM和Innodb的区别
- MyISAM 引擎:
- 不支持事务,但是所有操作都是原子性的
- 每次操作都是对整个表加锁
- 一个MyISAM表有三个文件:索引文件,表结构文件,数据文件
- 采用非聚集索引,索引文件的数据域存储指向数据文件的指针,辅索引和主索引基本一致,但辅索引不用保证唯一性。
-InnoDB 引擎:
- 支持ACID四种隔离级别
- 支持行级锁和外键约束
- 不存储总行数
- 主键索引采用聚集索引,辅索引的数据域存储主键的值;因此从辅索引查找数据,需要先通过辅索引找到主键值,再访问辅索引;推荐使用自增主键,防止插入数据时,为了维持B+树结构,文件的大调整。
场景:含有GroupBy的语句里如何显示查询Count()为0的字段。