随笔分类 -  MySQL

摘要:前言 角色(Role),可以认为是一些权限的集合,一直是存在各个数据库中,比如Oracle、SQL Server、OceanBase等,MySQL 自从 8.0 release 才引入角色这个概念。 为用户赋予统一的角色,即把一个带有某些权限集合的角色分配给一个用户,那该用户就拥有了该角色所包含的所 阅读全文
posted @ 2022-10-07 17:46 GeaoZhang 阅读(796) 评论(0) 推荐(0) 编辑
摘要:MySQL InnoDB 锁 - For Update 加锁分析: 1. InnoDB锁 简单介绍 2. 当前读加锁分析:REPEATABLE-READ 可重复读、READ-COMMITTED 读已提交 3. 锁模式说明及8.0的data_locks表 一、InnoDB锁 1、全局锁 全局读锁,fl 阅读全文
posted @ 2022-01-24 16:43 GeaoZhang 阅读(1180) 评论(1) 推荐(1) 编辑
摘要:常见索引失效: 1. 条件索引字段"不干净":函数操作、运算操作 2. 隐式类型转换:字符串转数值;其他类型转换 3. 隐式字符编码转换:按字符编码数据长度大的方向转换,避免数据截取 一、常见索引失效场景 root@test 10:50 > show create table t_num\G *** 阅读全文
posted @ 2022-01-08 20:41 GeaoZhang 阅读(1081) 评论(0) 推荐(1) 编辑
摘要:一、事务描述 1、事务的四个特性 ACID 1. A:原子性 = 一个事务或者都成功、或者都失败; 2. C:一致性 = 在整个事务的生命周期里面,查询到的数据是一致的; MVCC多版本并发控制:利用undo保存某一时刻数据快照,通过版本号来减少锁的争用,保证各个事务互不影响。 3. I: 隔离性 阅读全文
posted @ 2019-03-05 19:11 GeaoZhang 阅读(1747) 评论(4) 推荐(1) 编辑
摘要:最近在做 SQL Server 到 MySQL 的迁移(migration),相较于对表和数据的迁移,最令人犯难的还是在功能性存储过程脚本的改写转换(convert),虽说 MySQL 如今是蓬勃发展,不断的更新迭代的优化,但是在存储过程等脚本方面与 Oracle、SQL Server 相比,个人感 阅读全文
posted @ 2018-11-15 16:38 GeaoZhang 阅读(3717) 评论(1) 推荐(3) 编辑
摘要:Prepared SQL Statement:SQL的执行、预编译处理语法、注意点 一、SQL 语句的执行处理1、即时 SQL 一条 SQL 在 DB 接收到最终执行完毕返回,大致的过程如下: 1. 词法和语义解析; 2. 优化 SQL 语句,制定执行计划; 3. 执行并返回结果; 如上,一条 SQ 阅读全文
posted @ 2018-11-01 19:32 GeaoZhang 阅读(61104) 评论(5) 推荐(14) 编辑
摘要:0:数据库逻辑结构包括表空间,段,区,数据块 1、数据库在逻辑上是由多个表间组成的,表空间中存储的对象是段; 2、段,由区组成,比如数据段,索引段,和undo段; 3、区,是磁盘分配的最小单位,是物理上连续的块,一个extent的大小是1M,由64个页组成; 4、块(页),在MySQL中块就是页,是 阅读全文
posted @ 2018-03-20 17:47 GeaoZhang 阅读(4136) 评论(2) 推荐(2) 编辑
摘要:UNDO特性:避免脏读、事务回滚、非阻塞读、MVCC、崩溃恢复 事务工作流程(图2) MVCC原理机制 崩溃恢复:redo前滚、undo回滚 长事务、大事务:危害、判断、处理 UNDO优化:实现undo分离、收缩undo表空间 0、undo物理存储研究 1>ibdata第五个数据块(系统事务表)中存 阅读全文
posted @ 2018-03-13 11:54 GeaoZhang 阅读(4414) 评论(8) 推荐(5) 编辑
摘要:概念:共享表空间 、独立表空间 【共享表空间】 又称为system tablespace系统表空间,a small set of data files (the ibdata files) 。 一、共享表空间ibdata1 1、数据字典(data dictionary):记录数据库相关信息 2、do 阅读全文
posted @ 2018-02-27 15:04 GeaoZhang 阅读(2655) 评论(0) 推荐(1) 编辑
摘要:1、redolog、binlog的简单分析 图解:redolog和binlog机制 2、开启binlog及关注点 3、关注binlog的相关参数 4、binlog模式分析 5、关于binlog的使用 补充:双一模式 一、区别redolog和binlog 1、如下表格的一个简单对比 2、redolog 阅读全文
posted @ 2017-08-20 21:04 GeaoZhang 阅读(6131) 评论(3) 推荐(1) 编辑
摘要:预读机制 两种预读算法 1、线性预读 2、随机预读 对预读的监控 一、预读机制 InnoDB在I/O的优化上有个比较重要的特性为预读,预读请求是一个i/o请求,它会异步地在缓冲池中预先回迁多个页面,预计很快就会需要这些页面,这些请求在一个范围内引入所有页面。InnoDB以64个page为一个exte 阅读全文
posted @ 2017-08-19 19:38 GeaoZhang 阅读(6489) 评论(1) 推荐(1) 编辑
摘要:写压力调优:数据库的写、写压力性能监控、写压力调优参数 一、关于DB的写 1、数据库是一个写频繁的系统 2、后台写、写缓存 3、commit需要写入 4、写缓存失效或者写满-->写压力陡增-->写占读的带宽 1、BBU失效 2、写入突然增加、cache满 5、日志写入、脏缓冲区写入 1、数据库是一个 阅读全文
posted @ 2017-08-18 20:24 GeaoZhang 阅读(9216) 评论(0) 推荐(6) 编辑
摘要:1、日常关注点的问题 2、日志点分析 3、checkpoint:脏页刷盘的检查点 4、模糊检查点发生条件 1、master thread checkpoint 2、flush_lru_list checkpoint 3、async/sync flush checkpoint 4、dirty page 阅读全文
posted @ 2017-08-10 20:47 GeaoZhang 阅读(11244) 评论(8) 推荐(3) 编辑
摘要:1、latch锁是什么锁? 2、latch锁是如何保护list? 3、latch争用的现象和过程? 4、latch什么时候会产生严重的争用? 5、如何监控latch争用情况? 6、如何确认latch争用类型? 7、如何降低latch争用? 一、latch锁是什么锁 1、定义 latch锁是内存锁,是 阅读全文
posted @ 2017-08-04 21:00 GeaoZhang 阅读(5356) 评论(0) 推荐(2) 编辑
摘要:三种page、三种list、LRU控制调优 一、innodb buffer pool中的三种页 1、free page:从未用过的页 2、clean page:干净的页,数据页的数据和磁盘一致 3、dirty page:脏页 SQL执行需求: 1、找free页 2、刷新脏页 1、这个页不是热的数据页 阅读全文
posted @ 2017-08-02 20:57 GeaoZhang 阅读(4280) 评论(3) 推荐(5) 编辑
摘要:Flush neighbor page 1、工作原理 2、参数控制 AIO 1、开启异步IO 一、刷新邻接页功能 1、工作原理 当刷新一个脏页时,innodb存储引擎会检测该页所在区(extent)的所有页,如果是脏页,那么一起进行刷新。这样做的好处显而易见,通过AIO可以将多个IO写入操作合并为一 阅读全文
posted @ 2017-07-31 20:13 GeaoZhang 阅读(2819) 评论(0) 推荐(0) 编辑
摘要:一、索引的资源消耗分析 1、索引三大特点 1、小:只在一个到多个列建立索引 2、有序:可以快速定位终点 3、有棵树:可以定位起点,树高一般小于等于3 2、索引的资源消耗点 1、树的高度,顺序访问索引的数据页,索引就是在列上建立的,数据量非常小,在内存中; 2、数据之间跳着访问 1、索引往表上跳,可能 阅读全文
posted @ 2017-07-28 20:04 GeaoZhang 阅读(19498) 评论(9) 推荐(4) 编辑
摘要:# 脏页刷盘的风险 两次写的原理机制 1、解决问题 2、使用场景 3、doublewrite的工作流程 4、崩溃恢复 # doublewrite的副作用 1、监控doublewrite负载 2、关闭doublewrite场景 一、脏页刷盘风险 关于IO的最小单位: 1、数据库IO的最小单位是16K( 阅读全文
posted @ 2017-07-26 20:22 GeaoZhang 阅读(27694) 评论(7) 推荐(3) 编辑
摘要:一、关于IOT:索引组织表 表在存储的时候按照主键排序进行存储,同时在主键上建立一棵树,这样就形成了一个索引组织表,一个表的存储方式以索引的方式来组织存储的。 所以,MySQL表一定要加上主键,通过主键来访问MySQL表的性能是最好: 1、显式定义主键:primary key 2、隐式定义主键:如果 阅读全文
posted @ 2017-07-25 19:06 GeaoZhang 阅读(9899) 评论(0) 推荐(3) 编辑
摘要:后台清理工作:脏页刷盘、undo回收 1、page cleaner thread:刷新脏页 2、purge thread:清空undo页、清理“deleted”page 一、innodb_page_cleaners page cleaner线程从buffer pool中刷脏页的线程数量。 1、5.7 阅读全文
posted @ 2017-07-23 17:11 GeaoZhang 阅读(4862) 评论(1) 推荐(1) 编辑