1、mysql分为 server 层和存储引擎;
server 层:
1、连接器:管理连接权限验证
2、查询缓存:命中缓存直接换回查询结果
3、分析器:分析语法
4、优化器:生成执行计划,选择索引
5、执行器:操作索引返回结果
存储引擎:
负责数据的存储和提取,其架构是插件式的(不同存储引擎的数据调用不同存储引擎接口);5.5.5版本的默认存储引擎为 innodb
innoDB:事物、外键、聚集索引,不支持全文索引,数据存储是一个文件
MyISAM:不支持事物 不支持外键,非聚集索引,数据存储是多个文件(索引文件、表结构文件、数据文件)
Memory:数据存储在内存中
2、mysql 的执行过程:
1、连接器连接:连接器默认的空闲连接时长为8小时,由 wait_timeout 参数控制
2、查询缓存:select SQL_CACHE * from table where xxx=xxx
3、分析器:分析语法
4、优化器:选择索引
5、执行器:调用存储引擎的接口
3、mysql 日志
redolog:innodb 日志(重做日志)
binlog:server层日志 (归档日志)固定大小:后面日志覆盖前面的日志
4、mysql 更新操作流程:
读数据到内存-->更新数据-->写redolog-->redolog状态为prepare-->写binlog日志-->提交事物-->redolog状态为commit
5、事物隔离级别:
脏读:事物A读取了事物B更新的数据,B回滚,那么事物A读到的数据是脏数据
不可重复读:事物A多次读取同一数据,事物B对数据做了更新并提交,导致A读取到的数据不一致
幻读:事物A在修改所有数据完成后,事物B又新增了一条数据,A发现还有一条数据没修改,感觉有幻觉一样。
小结:不可重复读侧重点是一条数据,幻读是整个表

四种事务隔离级别:
1、读末提交
2、不可重复读
3、可重复读 (Repeatable read)默认事务隔离
4、串行化
6、索引的数据结构:
哈希表:适用于等值场景
有序数组:适用于等值场景和范围查询场景,有序数组索引的更新代价大,最好用于静态数据表
搜索树:搜索效率稳定,不会出现大幅波动,而且基于索引的顺序扫描时,也可以利用双向指针快速左右移动,效率非常高
跳表:优化过的哈希索引

innoDB分为主键索引和非主键索引(二级索引),主键索引保存了该行的全部信息,二级索引保存了该行数据的主键
7、count(*)的效率问题
count(*)=count(1)>count(id)>count(字段)
8、慢查询日志:
SHOW VARIABLES LIKE '%slow_query_log%';#查看慢查询日志是否开启
SET GLOBAL slow_query_log=1;#开启慢查询日志 (临时设置 my.cnf里面是永久设置)

change_buffer
sort_buffer
join_buffer

最新文章

  1. jQuery如何退出each循环的?
  2. jQuery系列:五个模块总结
  3. soapUI 时间格式
  4. HBase 压缩算法设置及修改
  5. 利用AdaBoost元算法提高分类性能
  6. Struts2 - 传值
  7. Careercup - Google面试题 - 4807591515389952
  8. .NET framework 4.0安装失败怎么办
  9. Virtualbox - 共享文件夹
  10. Java中迭代器Iterator的使用
  11. nginx配置备份
  12. 傻瓜学编程之block_3
  13. 51Nod1306 高楼和棋子 动态规划
  14. 通过echarts的demo
  15. svn安装教程
  16. DragonBones的下载和安装
  17. codeforces水题100道 第十九题 Codeforces Round #109 (Div. 2) A. I_love_%username% (brute force)
  18. Java 多线程中的任务分解机制-ForkJoinPool,以及CompletableFuture
  19. BlockingQueue-----多线程(一)
  20. memcache原理及环境搭建、测试

热门文章

  1. ML.NET相关资源整理
  2. PHP生成器yield使用示例
  3. mysql防SQL注入搜集
  4. 在Centos7.3下使用Siege对Django服务进行压力测试
  5. Kafka部署安装
  6. Linux系列之压缩命令
  7. 个人学习记录-Cpp基础-成员初始化列表
  8. Spring源码 02 项目搭建
  9. 用HTTP服务的方式集成learned cardinality estimate方法进 Postgresql
  10. java中String使用+