• 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!!!
  • 相关阅读:
    详解ASP.NET MVC 2中强类型HTML辅助方法
    C#3.0规范(四)Lambda 表达式
    HTTP Status 检测器 : SEO在线工具 : SEO 网站优化推广
    CSS 命名规范
    数据库表及字段命名、设计规范
    C#变量命名中的[匈牙利命名法][骆驼命名法][帕斯卡(pascal)命名法]
    C#命名规范
    推荐磁盘分区管理工具Acronis Disk Director Suite 10.0(有效注册码+汉化补丁)
    经典海量jQuery插件
    GET PUT POST的含义(Http)
  • 原文地址:https://www.cnblogs.com/longfeiPHP/p/11413885.html
Copyright © 2020-2023  润新知