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. 多实例安装
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. 测试
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. 作业
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 安装
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
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. 锁的等待问题
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. 还原点
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. 日期类型
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.第三部分:每一种查询的详细统计结果
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
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
以上差不多就是这整份“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 监控
MySQL就唠嗑到这儿啦,以上所提及的全部MySQL知识笔记,不管是[mysql高级知识笔记],还是[阿里P8MySQL]等等,都可提供完整的源文件哟~【free download--please click here】
网友评论