网站建设费如何记账,wordpress 过滤插件下载,丰宁县建设局网站,wordpress主题插件不兼容一.理论 
一条SQL执行过程 连接器分析器优化器执行器 索引 索引的出现其实就是为了提高数据查询的效率,就像书的目录一样 常见索引数据结构(每碰到一个新数据库,我们需要先关注它的数据模型,这样才能从理论上分析出这个数据库的适用场景) 哈希…一.理论
 
- 一条SQL执行过程  
 - 索引
 索引的出现其实就是为了提高数据查询的效率,就像书的目录一样 - 常见索引数据结构(每碰到一个新数据库,我们需要先关注它的数据模型,这样才能从理论上分析出这个数据库的适用场景) 
- 哈希表 
- 适用于只有等值查询的场景,比如 Memcached 及其他一些 NoSQL 引擎
 
  - 有序数组 
- 适用于等值查询和范围查询场景中,只适用于静态存储引擎
 
  - 搜索树
 - 跳表
 - LSM 树
 
  - 常见索引
 基于非主键索引的查询需要多扫描一棵索引树,应用中应该尽量使用主键查询 - 主键索引的叶子节点存的是整行数据。在 InnoDB 里,主键索引也被称为聚簇索引(clustered index)。
 - 非主键索引的叶子节点内容是主键的值。在 InnoDB 里,非主键索引也被称为二级索引(secondary index)
 - 唯一索引:唯一索引可以创建多个且能为空(只能一次),主键索引不能为空
 
  - 索引优化 
- 覆盖索引
 由于覆盖索引可以减少树的搜索次数,显著提升查询性能,所以使用覆盖索引是一个常用的性能优化手段。 - 最左前缀原则
 第一原则是,如果通过调整顺序,可以少维护一个索引,那么这个顺序往往就是需要优先考虑采用的。 - 索引下推
 
  
  - 事务(ACID) 
- 特性 
- 原子性(Atomicity)
 - 一致性(Consistency)
 - 隔离性(Isolation)
 这4种隔离级别,并行性能依次降低,安全性依次提高 - 读未提交(read uncommitted)
 一个事务还没提交时,它做的变更就能被别的事务看到 - 读提交(read committed)
 一个事务提交之后,它做的变更才会被其他事务看到 - 可重复读(repeatable read)
 一个事务执行过程中看到的数据,总是跟这个事务在启动时看到的数据是一致的。当然在可重复读隔离级别下,未提交变更对其他事务也是不可见的。 - 串行化(serializable )
 对于同一行记录,“写”会加“写锁”,“读”会加“读锁”。 
  - 持久性(Durability)
 
  - 多事务问题  
 - 事务启动方式 
- 显式启动事务语句,begin或者start transaction,提交commit,回滚rollback
 - set autocommit=0,该命令会把这个线程的自动提交关掉。这样只要执行一个select语句,事务就启动,并不会自动提交,直到主动执行commit或rollback或断开连接。
 
  
  - 锁  
 
 
二.实战