全网独家的“MySQL高级知识”集合,骨灰级收藏,手慢则无!

MySQL为什么这么重要?

MySQL为什么这么重要?是不是一脸问号??

image

什么都不要说了,先来看张图...

image

在所有数据库中,MySQL 排在第二,而 NoSQL 中 MongoDB 排在第一,你可能在想是不是有必要把 Oracle 也学习下,别着急,再看张图

image

全球访问量最大的 20 家网站,他们分别使用了什么数据库呢,绝大多数使用 mysql,有两个完整live.com 和 bing 使用的是 mssql,并不是他们使用不了 mysql,而是他要支持自己的数据库。

在国外可能挺多使用 mssql 或者 oracle 的,但是在过能,在去 IOE 的大背景下,包括银行在内的很多传统公司慢慢都在像 mysql 转型,不过其中有个老大不掉的公司,中国电力,依然使用 oracle,在十年的时间仅仅在 oracle 的使用上,中国电力就支出 390 几个亿,平均一年30,40 个亿,它有钱,如果你所在公司随随便便也能拿个几百个亿,那你也用 oracle 吧

回到咱们今天的主题:全网独家的“MySQL高级知识”集合

前面说了这么多MySQL的重要性,你应该明白MySQL是真的很重要了吧,那么既然如此重要,那还不快点来学习学习?

今天给大家带来的就是【全网独家的“MySQL高级知识”集合】,这份笔记说巧不巧,也是从朋友那里抠过来的,纯手写的文档,很不容易,听说整理了好几个月呢,那就一起来康康?

内容挺多的,大概的给大家介绍一下下,完整的原文档请注意【free download--please click here】,就是这么简单,获取免费下载的方式!!

1.MySQL的重要性

略过...关于MySQL的重要性,早在开篇我就已经说过了,这里就不提了(其实前面也是嫖的笔记里的,嘿嘿)

2.MySQL 安装

  • 2.1. 准备工作

  • 2.2. 单实例安装

  • 2.3. 多实例安装

image

3.Mysql 权限

  • 3.1. 最简单的MySQL权限

  • 3.2. 深入研究下 MySQL 权限

  • 3.2.1. 用户标识是什么

  • 3.2.2. 用户权限所涉及的表

  • 3.2.3. Mysql 的角色

  • 3.2.3.1. 准备工作

  • 3.2.3.2. 创建一个角色

  • 3.2.3.3. 创建 2 个开发人员账号

  • 3.2.3.4. 把两个用户加到组里面

  • 3.2.3.5. 给角色 dev_role 应该有的权限

  • 3.2.3.6. 测试

image
image

4.MySql 数据类型

  • 4.1. Int 类型

  • 4.1.1. 有无符号

  • 4.1.2. INT(N)是什么?

  • 4.1.3. 自动增长的面试题

  • 4.2. 字符类型

  • 4.2.1. 排序规则

  • 4.3. 时间类型

  • 4.4. JSON 类型

  • 4.4.1. JSON 入门

  • 4.4.2. JSON 函数

  • 4.4.2.1. json_extract 抽取

  • 4.4.2.2. JSON_OBJECT 将对象转为 json

  • 4.4.2.3. json_insert 插入数据

  • 4.4.2.4. json_merge 合并数据并返回

  • 4.4.2.5. 其他函数

  • 4.5. JSON 索引

  • 4.6. 作业

image
image

5.Mysql 架构

  • 5.1. 体系

  • 5.1.1. 连接层

  • 5.1.2. SQL 处理层

  • 5.1.2.1. 缓存

  • 5.1.2.2. 解析查询

  • 5.1.2.3. 优化

  • 5.2. 逻辑架构

  • 5.3. 物理存储结构

  • 5.3.1. 数据库的数据库(DataDir)

  • 5.3.2. 数据库

  • 5.3.3. 表文件

  • 5.3.4. mysql utilities 安装

image
image

6.存储引擎

  • 6.1. MyISAM

  • 6.1.1. 表压缩

  • 6.1.2. 适用场景

  • 6.2. Innodb

  • 6.3. CSV

  • 6.4. Archive

  • 6.5. Memory

  • 6.5.1. 特点

  • 6.5.2. 与临时表的区别

  • 6.5.3. 使用场景

  • 6.6.Ferderated

image
image

7.锁

  • 7.1. 锁的简介

  • 7.1.1. 为什么需要锁?

  • 7.1.2. 锁的概念

  • 7.1.3. MySQL 中的锁

  • 7.1.4. 表锁与行锁的使用场景

  • 7.2. MyISAM 锁

  • 7.2.1. 共享读锁

  • 7.2.2. 独占写锁

  • 7.2.3. 总结

  • 7.3. InnoDB 锁

  • 7.3.1. 语法

  • 7.3.2. 注意

  • 7.4. 锁的等待问题

image
image

8.事务

  • 8.1. 为什么需要事务

  • 8.2. 什么存储引擎支持事务

  • 8.3. 事务特性

  • 8.3.1. 原子性(atomicity)

  • 8.3.2. 一致性(consistency)

  • 8.3.3. 持久性(durability)

  • 8.3.4. 隔离性(isolation)

  • 8.3.4.1. 事务并发问题

  • 8.3.4.2. 未提交读(READ UNCOMMITED)脏读

  • 8.3.4.3. 已提交读 (READ COMMITED)不可重复读

  • 8.3.4.4. 可重复读(REPEATABLE READ)

  • 8.3.4.5. 可串行化(SERIALIZABLE)

  • 8.3.4.6. 间隙锁(gap 锁)

  • 8.4. 事务语法

  • 8.4.1. 开启事务

  • 8.4.2. 事务回滚

  • 8.4.3. 事务提交

  • 8.4.4. 还原点

image
image

9.业务设计

  • 9.1. 逻辑设计

  • 9.1.1. 范式设计

  • 9.1.1.1. 数据库设计的第一大范式

  • 9.1.1.2. 数据库设计的第二大范式

  • 9.1.1.3. 数据库设计的第三大范式

  • 9.1.1.4. 范式设计实战

  • 9.1.1.4.1. 用户登陆及用户管理

  • 9.1.1.4.2. 商品信息

  • 9.1.1.4.3. 供应商管理功能

  • 9.1.1.4.4. 在线销售功能

  • 9.1.1.4.5. 表汇总

  • 9.1.1.4.6. 查询练习

  • 9.1.2. 反范式设计

  • 9.1.2.1. 什么叫反范式化设计

  • 9.1.2.1.1. 商品信息反范式设计

  • 9.1.2.1.2. 在线销售功能反范式

  • 9.1.2.1.3. 查询练习

  • 9.1.3. 总结

  • 9.1.3.1. 范式化设计优缺点

  • 9.1.3.2. 反范式化设计优缺点

  • 9.2. 物理设计

  • 9.2.1. 命名规范

  • 9.2.1.1.1. 数据库、表、字段的命名要遵守可读性原则

  • 9.2.1.1.2. 数据库、表、字段的命名要遵守表意性原则

  • 9.2.1.1.3. 数据库、表、字段的命名要遵守长名原则

  • 9.2.2. 存储引擎选择

  • 9.2.3. 数据类型选择

  • 9.2.3.1.1. 浮点类型

  • 9.2.3.1.2. 日期类型

image
image

10.慢查询

  • 10.1. 什么是慢查询

  • 10.2. 慢查询配置

  • 10.2.1. 慢查询基本配置

  • 10.2.2. 慢查询解读

  • 10.3. 慢查询分析

  • 10.3.1. Mysqldumpslow

  • 10.3.2. pt_query_digest

  • 10.3.2.1. 扩展阅读

  • 10.3.2.1.1. 语法及重要选项

  • 10.3.2.1.2. 分析 pt-query-digest 输出结果

  • 10.3.2.1.2.1.第一部分:总体统计结果

  • 10.3.2.1.2.2.第二部分:查询分组统计结果

  • 10.3.2.1.2.3.第三部分:每一种查询的详细统计结果

image
image

11.索引与执行计划

  • 11.1. 索引入门

  • 11.1.1. 索引是什么

  • 11.1.1.1. 生活中的索引

  • 11.1.1.2. MySql 中的索引

  • 11.1.1.3. 谈下 B+Tree

  • 11.1.1.3.1. 二分查找

  • 11.1.1.3.2. 二叉树(Binary Tree)

  • 11.1.1.3.3. 平衡二叉树(AVL-树)

  • 11.1.1.3.3.1. 平衡二叉树的遍历

  • 11.1.1.3.3.2. 平衡二叉树的旋转

  • 11.1.1.3.4. B+树

  • 11.1.1.3.4.1. B+树的定义

  • 11.1.1.3.4.2. B+树的作用

  • 11.1.1.3.4.3. B+树的扇出(fan out)

  • 11.1.1.3.4.4. B+树的插入操作

  • 11.1.2. 索引的分类

  • 11.1.3. 基础语法

  • 11.2. 执行计划

  • 11.2.1. 什么是执行计划

  • 11.2.2. 执行计划的作用

  • 11.2.3. 执行计划的语法

  • 11.2.4. 执行计划详解

  • 11.2.4.1. ID 列

  • 11.2.4.1.1.Id 相同

  • 11.2.4.1.2.Id 不同

  • 11.2.4.1.3.Id 相同又不同

  • 11.2.4.2. select_type 列

  • 11.2.4.2.1. SIMPLE

  • 11.2.4.2.2.PRIMARY 与 SUBQUERY

  • 11.2.4.2.3.DERIVED

  • 11.2.4.2.4.UNION RESULT 与 UNION

  • 11.2.4.3. table 列

  • 11.2.4.4. Type 列

  • 11.2.4.4.1. System 与 const

  • 11.2.4.4.2. eq_ref

  • 11.2.4.4.3.Ref

  • 11.2.4.4.4.Range

  • 11.2.4.4.5.Index

  • 11.2.4.4.6.All

  • 11.2.4.5. possible_keys 与 Key

  • 11.2.4.6. key_len

  • 11.2.4.6.1. 字符类型

  • 11.2.4.6.1.1.字符类型-索引字段为 char 类型+不可为 Null 时

  • 11.2.4.6.1.2.字符类型-索引字段为 char 类型+允许为 Null 时

  • 11.2.4.6.1.3.索引字段为 varchar 类型+不可为 Null 时

  • 11.2.4.6.1.4.索引字段为 varchar 类型+允许为 Null 时

  • 11.2.4.6.2. 数值类型

  • 11.2.4.6.3. 日期和时间

  • 11.2.4.6.4. 总结

  • 11.2.4.6.4.1. 字符类型

  • 11.2.4.6.4.2. 整数/浮点数/时间类型的索引长度

  • 11.2.4.7. Ref

  • 11.2.4.8. Rows

  • 11.2.4.9. Extra

  • 11.2.4.9.1. Using filesort

  • 11.2.4.9.2. Using temporary

  • 11.2.4.9.3. Using index

  • 11.2.4.9.3.1.覆盖索引

  • 11.2.4.9.4.Using where 与 using join buffer

  • 11.2.4.9.5.impossible where

image
image
image

12.SQL 优化

  • 12.1. 优化实战

  • 12.1.1. 策略 1.尽量全值匹配

  • 12.1.2. 策略 2.最佳左前缀法则

  • 12.1.3. 策略 3.不在索引列上做任何操作

  • 12.1.4. 策略 4.范围条件放最后

  • 12.1.5. 策略 5.覆盖索引尽量用

  • 12.1.6. 策略 6.不等于要慎用

  • 12.1.7. 策略 7.Null/Not 有影响

  • 12.1.7.1. 自定定义为 NOT NULL

  • 12.1.7.2. 自定义为 NULL 或者不定义

  • 12.1.8. 策略 8.Like 查询要当心

  • 12.1.9. 策略 9.字符类型加引号

  • 12.1.10. 策略 10.OR 改 UNION 效率高

  • 12.1.11. 测试题

  • 12.2. 批量导入

  • 12.2.1. insert 语句优化

  • 12.2.2. LOAD DATA INFLIE

image
image

以上差不多就是这整份“MySQL高级知识”的大概内容,既然已经谈到MySQL了,那就接着来看看MySQL调优与面试吧..不论是哪一个笔记文档都可找小编免费分享啦,【free download--please click here】

阿里P8MySQL面试必备哪些知识点?

image

先从基础开始?(抽取30道)

  • 18.如果把一个 InnoDB 表的主键删掉,是不是就没有主键,就没办法进行回表查询了?

  • 19.执行一个 update 语句以后,我再去执行 hexdump 命令直接查看 ibd 文件内容,为什么没有看到数据有改变呢?

  • 20.内存表和临时表有什么区别?

  • 21.并发事务会带来哪些问题?

  • 22.什么是脏读和幻读?

  • 23.为什么会出现幻读?幻读会带来什么问题?

  • 24.如何避免幻读?

  • 25.如何查看 MySQL 的空闲连接?

  • 26.MySQL 中的字符串类型都有哪些?

  • 27.VARCHAR 和 CHAR 的区别是什么?分别适用的场景有哪些?

  • 28.MySQL 存储金额应该使用哪种数据类型?为什么?

  • 29.limit 3,2 的含义是什么?

  • 30.now() 和 current_date() 有什么区别?

  • 31.如何去重计算总条数?

  • 32.lastinsertid() 函数功能是什么?有什么特点?

  • 33.删除表的数据有几种方式?它们有什么区别?

  • 34.MySQL 中支持几种模糊查询?它们有什么区别?

  • 35.MySQL 支持枚举吗?如何实现?它的用途是什么?

  • 36.count(column) 和 count(*) 有什么区别?

  • 37.以下关于 count 说法正确的是?

  • 38.为什么 InnoDB 不把总条数记录下来,查询的时候直接返回呢?

  • 39.能否使用 show table status 中的表行数作为表的总行数直接使用?为什么?

  • 40.以下哪个 SQL 的查询性能最高?

  • 41.InnoDB 和 MyISAM 执行 select count(*) from t,哪个效率更高?为什么?

  • 42.在 MySQL 中有对 count(*) 做优化吗?做了哪些优化?

  • 43.在 InnoDB 引擎中 count(*)、count(1)、count(主键)、count(字段) 哪个性能最高?

  • 44.MySQL 中内连接、左连接、右连接有什么区别?

  • 45.什么是视图?如何创建视图?

  • 46.视图有哪些优点?

  • 47.MySQL 中“视图”的概念有几个?分别代表什么含义?

索引(抽取30道)

  • 6.索引有几种类型?分别如何创建?

  • 7.主索引和唯一索引有什么区别?

  • 8.在 InnDB 中主键索引为什么比普通索引的查询性能高?

  • 9.什么叫回表查询?

  • 10.如何查询一张表的所有索引?

  • 11.MySQL 最多可以创建多少个索引列?

  • 12.以下 like 查询会使用索引的是哪一个选项?为什么?

  • 13.如何让 like %abc 走索引查询?

  • 14.MySQL 联合索引应该注意什么?

  • 15.联合索引的作用是什么?

  • 16.什么是最左匹配原则?它的生效原则有哪些?

  • 17.列值为 NULL 时,查询会使用到索引吗?

  • 18.以下语句会走索引么?

  • 19.能否给手机号的前 6 位创建索引?如何创建?

  • 20.什么是前缀索引?

  • 21.为什么要用前缀索引?
    Miffy
    可是那个啥,不是说春节有两天是年假?

  • 22.什么情况下适合使用前缀索引?

  • 23.什么是页?

  • 24.索引的常见存储算法有哪些?

  • 25.InnoDB 为什么要使用 B+ 树,而不是 B 树、Hash、红黑树或二叉树?

  • 26.为什么 InnoDB 要使用 B+ 树来存储索引?

  • 27.唯一索引和普通索引哪个性能更好?

  • 28.优化器选择查询索引的影响因素有哪些?

  • 29.MySQL 是如何判断索引扫描行数的多少?

  • 30.MySQL 是如何得到索引基数的?它准确吗?

  • 31.MySQL 如何指定查询的索引?

  • 32.在 MySQL 中指定了查询索引,为什么没有生效?

  • 33.以下 or 查询有什么问题吗?该如何优化?

  • 34.以下查询要如何优化?

  • 35.MySQL 会错选索引吗?

  • 36.如何解决 MySQL 错选索引的问题?

锁(20道)

image

日志问题(抽个30道)

  • 11.MySQL 怎么知道 binlog 是完整的?

  • 12.MySQL 中可不可以只要 binlog,不要 redo log?

  • 13.MySQL 中可不可以只要 redo log,不要 binlog?

  • 14.为什么 binlog cache 是每个线程自己维护的,而 redo log buffer 是全局共用的?

  • 15.事务执行期间,还未提交,如果发生 crash,redo log 丢失,会导致主备不一致呢?

  • 16.在 MySQL 中用什么机制来优化随机读/写磁盘对 IO 的消耗?

  • 17.以下说法错误的是?

  • 18.以下说法正确的是?

  • 19.有没有办法把 MySQL 的数据恢复到过去某个指定的时间节点?怎么恢复?

  • 20.MySQL命令和内置函数篇

  • 21.如何用命令行方式连接 MySQL 数据库?

  • 22.关于命令 mysql -h 127.0.0.1 -uroot -P 3307 -p3307 以下说法错误的是?

  • 23.如何创建用户?并给用户授权?

  • 24.如何修改 MySQL 密码?

  • 25.如何使用 SQL 创建数据库,并设置数据库的编码格式?

  • 26.如何修改数据库、表的编码格式?

  • 27.如何使用 SQL 创建表?

  • 28.在 MySQL 命令行中如何查看表结构信息?

  • 29.如何使用 SQL 查看已知表的建表脚本?

  • 30.如何使用 SQL 语句更新表结构?

  • 31.MySQL 有哪些删除方式?有什么区别?

  • 32.如何开启和关闭 MySQL 服务?

  • 33.如何查询当前 MySQL 安装的版本号?

  • 34.如何查看某张表的存储引擎?

  • 35.如何查看当前数据库增删改查的执行次数统计?

  • 36.如何查询线程连接数?

  • 37.如何查看 MySQL 的最大连接数?能不能修改?怎么修改?

  • 38.CHAR_LENGTH 和 LENGTH 有什么区别?

  • 39.UNION 和 UNION ALL 的用途是什么?有什么区别?

  • 40.以下关于 WHERE 和 HAVING 说法正确的是?

调优问题(7道)

image

最后:MySQL性能调优与架构设计--全册

  • 基础篇

  • 第1节:MySQL基本介绍

  • 第2节:MySQL架构组成

  • 第3节:MySQL存储引擎简介

  • 第4节:MySQL安全管理

  • 第5节:MySQL备份与恢复

  • 性能优化篇

  • 第6节:影响MySQLServer性能的相关因素

  • 第7节:MySQL 数据库锁定机制

  • 第8节:MySQL 数据库Query 的优化

  • 第9节:MySQL 数据库Schema 设计的性能优化

  • 第10节:MySQL Server 性能优化

  • 第11节:常用存储引擎优化

  • 架构设计篇

  • 第12节:MySQL 可扩展设计的基本原则

  • 第13节:可扩展性设计之MySQL Replication

  • 第14节:可扩展性设计之数据切分

  • 第15节:可扩展性设计之Cache 与Search 的利用

  • 第16节:MySQL Cluster

  • 第17节:高可用设计之思路及方案

  • 第18节:高可用设计之MySQL 监控

image
image

MySQL就唠嗑到这儿啦,以上所提及的全部MySQL知识笔记,不管是[mysql高级知识笔记],还是[阿里P8MySQL]等等,都可提供完整的源文件哟~【free download--please click here】

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值