• MySQL精华笔记


    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

    If the copyright belongs to the longfei, please indicate the source!!!
  • 相关阅读:
    Mysql 数据插入 修改删除
    Mysql 查询
    详解path.resolve 以及path.join
    谈一下_前端模块化
    正则表达式学习(二)
    正则表达式学习(一)
    HTML中块元素与内联元素的概念
    Deepin linux Compass.app安装
    Deepin MongoDB安装&使用总结
    【修复】当Deepin开机进入BusyBox时修复
  • 原文地址:https://www.cnblogs.com/longfeiPHP/p/11413885.html
Copyright © 2020-2023  润新知