
【地基要深入】数据库MySQL
文章平均质量分 85
1. MySQL 基础
2. MySQL 原理
3. MySQL 调优
ImportNewXXT0101
天道不一定酬所有勤,但天道只酬勤
展开
-
【MySQL中的事务】- 02 - MVCC原理
1. MVCC1.1.MVCC原理1.1.1.复习事务隔离级别1.1.2.版本链1.1.3.ReadView1.1.4.READ COMMITTED脏读问题的解决不可重复读问题但会出现不可重复读问题。1.1.5.REPEATABLE READREPEATABLE READ解决不可重复读问题1.1.6.MVCC下的幻读解决和幻读现象1.1.7.MVCC小结原创 2023-05-15 22:47:01 · 138 阅读 · 0 评论 -
【MySQL中的事务】- 01 - 特性、问题、隔离级别
1. MySQL的事务基础1.1.为什么需要事务1.2.事务特性1.2.1.原子性(atomicity)1.2.2.一致性(consistency)1.2.3.持久性(durability)1.2.4.隔离性(isolation)1.3.事务并发引发的问题1.3.1.脏读1.3.2.不可重复读1.3.3.幻读1.4.SQL标准中的四种隔离级别1.5.MySQL中的隔离级别1.5.1.如何设置事务的隔离级别1.6.MySQL事务1.6.1.事务基本语法1.6.2.保存点1.6原创 2023-05-15 22:43:03 · 105 阅读 · 0 评论 -
【数据库基础知识】- 范式、类型、索引、B+树
1.1.数据库基础知识1.1.1.范式化设计1.1.1.1.什么是范式1.1.1.2.第一范式(1NF)1.1.1.2.第二范式(2NF)1.1.1.3.第三范式(3NF)1.1.2.反范式化设计1.1.3.范式化和反范式对比1.1.4.项目中常见的反范式实现1.1.4.1.缓存与汇总数据1.1.4.2.计数器表设计1.1.4.字段数据类型优化1.1.4.1.字段优化基本原则1.1.4.2.Int/整数类型1.1.4.3.实数类型1.1.4.4.字符串类型VARCHARCH原创 2017-11-06 10:47:27 · 465 阅读 · 1 评论 -
【MySQL中的锁】- 并发事务、锁粒度、死锁
1. MySQL中的锁1.1.解决并发事务问题1.2.并发事务问题1.2.1.方案一:读操作MVCC,写操作进行加锁1.2.2方案二:读、写操作都采用加锁的方式1.3锁定读(LockingReads)/LBCC1.3.1. 共享锁和独占锁1.3.2.锁定读的SELECT语句1.3.3. 写操作的锁1.4锁的粒度1.4.1.表锁与行锁的比较1.4.2.给表加S锁1.4.3.给表加X锁1.5.意向锁1.6.MySQL中的行锁和表锁1.6.1.其他存储引擎中的锁1.6.2.Inno原创 2023-05-11 17:36:32 · 231 阅读 · 0 评论 -
【MySQL的执行原理】-03- MySQL的查询成本
3.MySQL的查询成本3.1.什么是成本3.2.单表查询的成本3.2.1.基于成本的优化步骤实战1). 根据搜索条件,找出所有可能使用的索引2). 计算全表扫描的代价3). 计算使用不同索引执行查询的代价a 使用idx_expire_time执行查询的成本分析b 使用idx_order_no执行查询的成本分析c 是否有可能使用索引合并(Index Merge)4). 对比各种方案,找出成本最低的那一个3.3.Explain与查询成本3.3.1.EXPLAIN输出成本3.3.2.O原创 2023-05-10 19:59:02 · 430 阅读 · 0 评论 -
【MySQL的执行原理】-04- MySQL的查询重写规则
4.MySQL的查询重写规则4.1.条件化简4.1.1.移除不必要的括号4.1.2.常量传递(constant_propagation)4.1.3.移除没用的条件(trivial_condition_removal)4.1.4.表达式计算4.1.5.常量表检测4.2.外连接消除4.3.子查询优化4.3.1.子查询语法4.3.2.子查询在MySQL中是怎么执行的1)按返回的结果集区分子查询1.1)标量子查询1.2)行子查询1.3)列子查询1.4)表子查询2)按与外层查询关系来区原创 2017-11-07 21:45:11 · 352 阅读 · 1 评论 -
MYSQL演示关系型数据库的隔离级别
关系型数据库并发访问存在的问题:脏读:对于两个事物 T1、T2,T1 读取了已经被 T2 更新但还没有被提交的字段.。之后, 若 T2 回滚,T1读取的内容就是临时且无效的。不可重复读:对于两个事物 T1、T2,T1 读取了一个字段,然后 T2 更新了该字段。之后,T1再次读取同一个字段,值就不同了。幻读:对于两个事物 T1、T2,T1 从一个表中读取了一个转载 2018-01-31 23:22:28 · 268 阅读 · 0 评论 -
MySQL 学习教程(十四)【整理】-事务
参考:http://blog.youkuaiyun.com/qq_35246620/article/details/70823903事务通过前面的案例及解决方案,我们就引出了一个全新的概念,那就是:事务,即一系列将要发生或正在发生的连续操作。而事务安全,是一种保护连续操作同时实现(完成)的机制。事务安全的意义就是,保证数据操作的完整性。首先,执行如下 SQL 语句,创建银行账户表并插入数据:-- 创建银行账户...转载 2018-03-14 17:38:28 · 237 阅读 · 1 评论 -
MySQL 学习教程(十五)【整理】-数据库变量
参考:http://blog.youkuaiyun.com/qq_35246620/article/details/70823903变量在 MySQL 数据库中,变量有两种,分别为:系统变量和自定义变量。根据变量的作用范围,又分为:会话级别变量:仅对当前客户端当次连接有效;全局级别变量:对所有客户端的任一次连接都有效。系统变量系统变量,顾名思义,是系统设置好的变量(皆为全局级别变量),也是用来控制服务器表现的...转载 2018-03-14 17:39:48 · 191 阅读 · 0 评论 -
MySQL 学习教程(十六)【整理】-触发器
参考:http://blog.youkuaiyun.com/qq_35246620/article/details/70823903触发器触发器:trigger,是指事先为某张表绑定一段代码,当表中的某些内容发生改变(增、删、改)的时候,系统会自动触发代码并执行。触发器包含三个要素,分别为事件类型:增删改,即insert、delete和update;触发时间:事件类型前和后,即before和after;触发对...转载 2018-03-14 17:41:11 · 202 阅读 · 0 评论 -
MySQL 学习教程(十七)【整理】- 代码执行结果
参考:http://blog.youkuaiyun.com/qq_35246620/article/details/70823903代码执行结构在 MySQL 编程中,代码的执行结构有三种,分别为:顺序结构;分支结构;循环结构。顺序结构,自不必多说,在本文中,我们着重了解分支结构和循环结构。分支结构分支结构:事先准备多个代码块,通过判断条件是否满足,执行对应的代码。在 MySQL 中,只有if分支结构,其基本...转载 2018-03-14 17:42:22 · 171 阅读 · 0 评论 -
MySQL 学习教程(十八)【整理】- 函数
参考:http://blog.youkuaiyun.com/qq_35246620/article/details/70823903函数函数,就是将一段代码封装到一个结构中,在需要执行该段代码的时候,直接调用该结构(函数)执行即可。此操作,实现了代码的复用。在 MySQL 中,函数有两种,分别为:系统函数和自定义函数。系统函数顾名思义,系统函数就是系统定义好的函数,在需要的时候,我们直接调用即可。任何函数都有...转载 2018-03-14 17:45:15 · 156 阅读 · 0 评论 -
MySQL 学习教程(十九)【整理】- 存储过程
参考:http://blog.youkuaiyun.com/qq_35246620/article/details/70823903存储过程存储过程简称过程,procedure,是一种用来处理数据(增删改)的方式。简单点,我们也可以将其理解为没有返回值的函数。创建过程-- 基本语法create procedure 过程名([参数列表])begin -- 过程体end12345如果我们定义的过程的...转载 2018-03-14 17:46:39 · 150 阅读 · 0 评论 -
【MySQL中的系统库】-01- performance_schema
1.1.系统库简介1.2.performance_schema1.2.1.什么是performance_schema1.2.2.performance_schema使用1.2.3.检查当前数据库版本是否支持1.2.4.performance_schema表的分类1.2.5.performance_schema简单配置与使用1.2.6.查看最近执行失败的SQL语句1.2.7.查看最近的事务执行信息1.2.8.小结原创 2017-11-04 16:16:04 · 643 阅读 · 1 评论 -
【MySQL中的系统库】-02- sys系统库
1.sys系统库1.1.sys使用须知1.2.sys系统库使用1.3.查看慢SQL语句慢在哪里1.4.小结原创 2017-11-04 18:03:25 · 366 阅读 · 1 评论 -
【MySQL中的系统库】-03- information_schema
1.information_schema1.1.什么是information_schema1.2.information_schema表分类Server层的统计信息字典表Server层的表级别对象字典表Server层的混杂信息字典表InnoDB层的锁、事务、统计信息字典表InnoDB层的全文索引字典表InnoDB层的压缩相关字典表1.3.information_schema应用原创 2017-11-05 00:34:12 · 693 阅读 · 1 评论 -
【MySQL中的系统库】-04- Mysql中mysql系统库
1.Mysql中mysql系统库1.1.权限系统表1.2.统计信息表1.2.1.innodb_table_stats1.2.2.innodb_index_stats1.3.日志记录表1.3.1. general_log1.3.2. slow_log1.4.InnoDB中的统计数据1.4.1 统计数据存储方式1.4.2 基于磁盘的永久性统计数据1)n_rows统计项的收集2)innodb_index_stats3)定期更新统计数据a.开启innodb_stats_auto_reca原创 2017-11-04 17:38:47 · 831 阅读 · 1 评论 -
MySQL 学习教程(十二)【整理】-视图
参考: http://blog.youkuaiyun.com/qq_35246620/article/details/70823903视图视图:view,是一种有结构(有行有列),但没有结果(结构中不真实存放数据)的虚拟表,虚拟表的结构来源不是自己定义的,而是从对应的基表(视图的数据来源)中产生的。创建视图首先,给出创建视图的基本语法,基本语法:create view + 视图名 + as + select语...转载 2018-03-14 15:47:37 · 153 阅读 · 0 评论 -
MySQL 学习教程(十三)【整理】-数据备份与还原
数据备份与还原基础概念:备份,将当前已有的数据或记录另存一份;还原,将数据恢复到备份时的状态。为什么要进行数据的备份与还原?防止数据丢失;保护数据记录。数据备份与还原的方式有很多种,具体可以分为:数据表备份、单表数据备份、SQL备份和增量备份。数据表备份数据表备份,不需要通过 SQL 来备份,我们可以直接进入到数据库文件夹复制对应的表结构以及数据;在需要还原数据的时候,直接将备份(复制)的内容放回...转载 2018-03-14 16:53:57 · 219 阅读 · 0 评论 -
SQL实战练习【2】
六、dept_emp和dept_manager表如下:CREATE TABLE `dept_emp` (`emp_no` int(11) NOT NULL,`dept_no` char(4) NOT NULL,`from_date` date NOT NULL,`to_date` date NOT NULL,PRIMARY KEY (`emp_no`,`dept_no`))原创 2017-12-28 08:21:33 · 364 阅读 · 0 评论 -
SQL实战练习【1】
一、employees表如下:CREATE TABLE `employees` (`emp_no` int(11) NOT NULL,`birth_date` date NOT NULL,`first_name` varchar(14) NOT NULL,`last_name` varchar(16) NOT NULL,`gender` char(1) NOT NU原创 2017-12-23 11:34:04 · 371 阅读 · 0 评论 -
【MySQL的执行原理】-01- 单表访问的索引合并
1.单表访问之索引合并1.1.Intersection合并1.1.1.等值匹配1.1.2.主键列可以是范围匹配1.2.Union合并1.2.1.等值匹配1.2.2.主键列可以是范围匹配1.2.3.使用Intersection索引合并的搜索条件1.3.Sort-Union合并1.4.联合索引替代Intersection索引合并原创 2017-11-06 11:20:05 · 570 阅读 · 1 评论 -
【MySQL8新特性】-账户安全、索引增强、CTE、窗口函数、原子DDL、JSON增强
1. MySQL8新特性1.1. 账户与安全1.1.1. 用户创建和授权1.1.2. 认证插件更新1.1.3. 密码管理1.2. 索引增强1.2.1. 隐藏索引1.2.2. 降序索引1.2.3. 函数索引1.3. 通用表达式(CTE)1.4. 窗口函数1.5. 原子DDL操作1.6. JSON增强1.7. InnoDB其他改进功能原创 2017-11-07 22:06:54 · 529 阅读 · 1 评论 -
【MySQL中的索引】-01- 索引分类介绍
1.MySQL中的索引1.1.B+树索引1.1.1.聚集索引/聚簇索引1.1.2.辅助索引/二级索引1.1.3.回表1.1.4.联合索引/复合索引1.1.5.覆盖索引1.2.哈希索引1.3.全文索引1.4.索引在查询中的使用原创 2017-11-05 10:31:34 · 582 阅读 · 1 评论 -
【MySQL中的索引】-02- 创建高效索引
1.高性能的索引创建策略1.1.索引列的类型尽量小1.2.索引的选择性1.3.前缀索引1.4.只为用于搜索、排序或分组的列创建索引1.5.多列索引1.6.三星索引2.设计三星索引实战原创 2017-11-05 11:21:12 · 539 阅读 · 1 评论 -
【MySQL体系架构】- MySQL体系架构解析
1.MySQL体系架构1.1.MySQL的分支与变种1.1.1.Drizzle1.1.2.MariaDB1.1.3.Percona Server1.2.MySQL的替代1.2.1.Postgre SQL1.2.2.SQLite2.MySql基础2.1.MySQL体系架构2.1.1.连接层2.1.2.Server层(SQL处理层)2.1.2.1.缓存(了解即可)2.1.3.存储引擎层2.1.3.1.MySQL官方引擎概要2.1.3.2.值得了解的第三方引擎2.1.3.3.选择合原创 2017-11-06 07:47:29 · 837 阅读 · 1 评论 -
【MySQL的执行原理】-02- 连接查询
2.连接查询2.1.连接简介2.1.1.连接的本质2.1.2.连接过程简介2.1.3.内连接和外连接左(外)连接的语法右(外)连接的语法内连接的语法2.2.MySQL对连接的执行2.2.1.嵌套循环连接(Nested-LoopJoin)2.2.2.使用索引加快连接速度2.2.3.基于块的嵌套循环连接(Block Nested-Loop Join)原创 2017-11-07 20:57:40 · 374 阅读 · 1 评论