zoukankan      html  css  js  c++  java
  • 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!!!
  • 相关阅读:
    设计模式(二):命令模式实例
    设计模式(一):简单工厂实例
    vue中使用base64进行加解密
    vue跨域问题解决(生产环境)
    彩色图像的直方图绘制及灰度图像均衡化
    MySql中添加用户,新建数据库,用户授权,删除用户,修改密码
    python办公入门2:开发准备工作
    python办公入门1:概述
    python菜鸟教程学习9:函数
    python菜鸟教程学习8:迭代器与生成器
  • 原文地址:https://www.cnblogs.com/longfeiPHP/p/11413885.html
Copyright © 2011-2022 走看看