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

MySQL精华笔记的更多相关文章

  1. Mysql学习笔记(三)对表数据的增删改查。

    正文内容. 这一部分是最简单的,也是最麻烦的.简单是因为其实只包括增删该插四个部分.大体上看,增加数据.删除数据.修改数据.查询数据都不麻烦啊,我们日常都是常用的.这个谁不会呢?以前在培训机构学mys ...

  2. MySQL学习笔记一

    MySQL 学习笔记 一 一.数据库简单介绍 1. 按照数据库的发展时间顺序,主要出现了以下类型数据库系统: Ø 网状型数据库 Ø 层次型数据库 Ø 关系型数据库 Ø 面向对象数据库 上面4中数据库系 ...

  3. MYSQL基础笔记(六)- 数据类型一

    数据类型(列类型) 所谓数据烈性,就是对数据进行统一的分类.从系统角度出发时为了能够使用统一的方式进行管理,更好的利用有限的空间. SQL中讲数据类型分成三大类:1.数值类型,2.字符串类型和时间日期 ...

  4. MYSQL基础笔记(五)- 练习作业:站点统计练习

    作业:站点统计 1.将用户的访问信息记录到文件中,独占一行,记录IP地址 <?php //站点统计 header('Content-type:text/html;charset=utf-8'); ...

  5. MYSQL基础笔记(四)-数据基本操作

    数据操作 新增数据:两种方案. 1.方案一,给全表字段插入数据,不需要指定字段列表,要求数据的值出现的顺序必须与表中设计的字段出现的顺序一致.凡是非数值数据,到需要使用引号(建议使用单引号)包裹. i ...

  6. MYSQL基础笔记(三)-表操作基础

    数据表的操作 表与字段是密不可分的. 新增数据表 Create table [if not exists] 表名( 字段名 数据类型, 字段名 数据类型, 字段n 数据类型 --最后一行不需要加逗号 ...

  7. MYSQL基础笔记(二)-SQL基本操作

    SQL基本操作 基本操作:CRUD,增删改查 将SQL的基本操作根据操作对象进行分类: 1.库操作 2.表操作 3.数据操作 库操作: 对数据库的增删改查 新增数据库: 基本语法: Create da ...

  8. MYSQL基础笔记(一)

    关系型数据库概念: 1.什么是关系型数据库? 关系型数据库:是一种建立在关系模型(数学模型)上的数据库 关系模型:一种所谓建立在关系上的模型. 关系模型包含三个方面: 1.数据结构:数据存储的问题,二 ...

  9. MySQL入门笔记

    MySQL入门笔记 版本选择: 5.x.20 以上版本比较稳定 一.MySQL的三种安装方式: 安装MySQL的方式常见的有三种: ·          rpm包形式 ·          通用二进制 ...

随机推荐

  1. vue-resource && axios

    1 # axios 2 # 1.安装:npm i axios 3 # 2.使用: 4 import axios from 'axios' 5 axios.get(URL).then(response= ...

  2. MySQL为什么"错误"选择代价更大的索引

    欢迎来到 GreatSQL社区分享的MySQL技术文章,如有疑问或想学习的内容,可以在下方评论区留言,看到后会进行解答 MySQL优化器索引选择迷思. 高鹏(八怪)对本文亦有贡献. 1. 问题描述 群 ...

  3. CF859E 题解

    分析 我们不妨把这些座位看作是一张图中的节点,把每个人的诉求作为一条边(由[原座位]指向[想去的座位]) 比如,对于样例#1,我们就可以得到这样一张图: 显然,我们有可能会得到多个连通图(比如上面这张 ...

  4. vue自定义switch开关,使用less支持换肤

    实际项目用到了,记录一下,也方便以后使用,这样也可以避免为了使用一个switch,引入整个外部web框架: 也可以方便更好的理解是和使用less. 基础代码使用的是网上的,然后自己添加了less换肤, ...

  5. Hive存储格式之RCFile详解,RCFile的过去现在和未来

    我在整理Hive的存储格式和压缩格式,本来打算一篇发出来,结果其中一小节就有很多内容,于是打算写成Hive存储格式和压缩格式系列. 本节主要讲一下Hive存储格式最早的典型的列式存储格式RCFile. ...

  6. 从C过渡到C++(1)——GNU/Linux

    从C过渡到C++(1)--GNU/Linux 目录 从C过渡到C++(1)--GNU/Linux 大名鼎鼎的GNU/Linux GNU GNU的组成 一点补充 MinGW 运行时库 额外的内容 Min ...

  7. FFT快速傅立叶变换:解析wav波频图、Time Domain、Frequency Domain

    您好,此教程将教大家使用scipy.fft分析wav文件的波频图.Time Domain.Frequency Domain. 实际案例:声音降噪,去除高频. 结果: 波频图: Time Domain:

  8. 彻底搞懂C#异步编程 async和await的原理

    1.前提 熟练掌握Task并行编程. 2.用Task并行解释async和await异步 因为控制台有多线程操作的优化,因此这里选择winform来做示例. 测试代码如下所示: 有三个textbox,一 ...

  9. CodeForces - 1690F

    Problem - F - Codeforces 题意: 给出一个字符串,给出一个序列,每次对应位置的字符变成序列指定位置的字符,即序列中对应位置为2,那么字符串的这个位置的字符就要变成字符串第二个位 ...

  10. 第六十篇:Vue的基本使用

    好家伙,要来了,经典"hello world" 试用一下vue ① 导入 vue.js的 script 脚本文件 ② 在页面中声明一个将要被vue所控制的DOM区域 ③ 创建vm实 ...