如何为 MySQL 提 Bug
需知基本要素你做了什么,你希望发生什么,以及实际发生了什么。这是 bug 报告的三个基本元素。你需要准确地告诉他们你做了什么(例如,“我的程序运行查询 SELECT * FROM happy_meals WHERE sandwich = ‘hamburger’ AND side = ‘onion rings’),你期望发生什么(继续这个例子,“我期望 MySQL 返回一个包含 hamburger
MySQL:关于 RR 的一些实验及拓展(三)
疑问我们一行行加 X+Gap 锁,那没加行锁时数据会不会产生影响?还是先加表锁,等对所有行加 X+Gap锁后再释放表锁?实验为了验证,我将存储过程改了一下,让其处理大数据量操作,然后再进行实验实验一确定表锁的样子确认隔离级别mysql> show variables like '%iso%'; +-------------------
MySQL:关于RR的一些实验及拓展(二)
从简单的增删改查角度,了解了一下锁,那么从视图角度是怎样的呢?概念锁的类型共享锁(S Lock):允许拥有共享锁的事务读取该行行数据。 当一个事务拥有一行的共享锁时,另外的事务可以在同一行数据也获得共享锁, 但另外的事务无法获得同一行数据上的排他锁排他锁(X Lock):允许拥有排它锁的事务修改或删除该行数据。 当一个事务拥有一行的排他锁时, 另外的事务在此行数据上无法获得共享锁和排它锁,只能等待
MySQL:关于RR的一些实验及拓展
最近收到了很多大佬的讨论,我大概研究了一下。相关概念锁相关问题脏读:一个事务可以读到另一个事务中未提交的数据不可重复读:在一个事务没有结束时,另外一个事务也访问该同一数据集合,并做了 DML 操作。因此,在第一个事务两次读数据之间,读到的数据可能是不一样的幻读(丢失更新):一个事务的更新操作会被另一个事务的更新操作所覆盖,从而导致数据的不一致。虚读:在同一个事务中,连续执行两次查询,但是两次查询之
MySQL:Windows下分库备份脚本
新获取到一个需求,就是要按库进行备份,写了份脚本和大家分享一下吧@echo off for /f "Tokens=1-3 Delims=/ " %%i in ('date /t') do set dt=%%i-%%j-%%k- for&
MySQL8.0:The General Query Log
常规查询日志是关于 mysqld 正在做什么的常规记录。当客户端连接或断开连接时,服务器将信息写入该日志,并记录从客户端接收的每个SQL语句。当您怀疑客户端出现错误并想要确切地知道客户端发送给 mysqld 的内容时,常规查询日志可能非常有用。 显示客户机何时连接的每一行还包括使用 connection_type 来指示用于建立连接的协议。connection_type 是TCP/IP(不使用
MySQL8:新特性——资源管理
MySQL 是单进程多线程的程序,MySQL 线程包括后台线程(Master Thread、IO Thread、Purge Thread 等),以及用户线程。在 8.0 之前,所有线程的优先级都是一样的,并且所有的线程的资源都是共享的。但是在MySQL8.0 之后,由于 Resource Group 特性的引入,我们可以来通过资源组的方式修改线程的优先级以及所能使用的资源,可以指定不同的线程使用特
MySQL:刷新机制
MySQL这种关系型数据库,讲究日志先行策略,就是一条DML语句进入数据库之后,先写日志,再写数据文件 redo logredo log 又称重做日志文件,用来记录事务操作的变化,记录数据修改之后的值,不管事务是否被提交,都会被记录下来 在实例和介质失败时,如数据库掉电,这时候InnoDB存储引擎会使用重做日志,恢复到掉电前的时刻 默认情况至少有两个redo log文件,在磁盘用ib_log
MySQL:数据类型
MySQL中定义数据字段的类型对你数据库的优化是非常重要的。 MySQL支持多种类型,大致可以分为三类:数值、日期/时间和字符串(字符)类型。 数值类型MySQL支持所有标准SQL数值数据类型。 这些类型包括严格数值数据类型(INTEGER、SMALLINT、DECIMAL和NUMERIC),以及近似数值数据类型(FLOAT、REAL和DOUBLE PRECISION)。 关键字INT是I
MySQL:内存结构
SGA innodb_buffer_boolinnodb 高速缓冲 data 和索引,简称 IBP,这个是 Innodb 引擎中影响性能最大的参数。用来缓存Innodb表的数据、索引、插入缓冲、数据字典等信息。建议将 IBP 设置的大一些,单实例下,建议设置为可用 RAM 的 50%~80%。 innodb 不依赖 OS,而是自己缓存了所有数据,包括索引数据、行数据等等,这个和 myisa
MySQL:show index
语法show index from your_tablename WHERE condition; 示例mysql> show index from baymax.resource_database\G; *************************** 1. row *************************** Table: resource_d
MySQL:事务
认识事务 A(Atomicity)—原子性:整个数据库事务是不可分割的工作单位。只有使事务中所有的数据库操作都执行成功,才算整个事务成功。事务中任何一个 SQL 语句执行失败,已经执行成功的 SQL 语句也必须回滚,退回到执行事务前的状态。C(Consistency)—一致性:将数据库从一种状态转变为下一种一致的状态。在事务开始之前和事务结束以后,数据库的完整性约束没有被破坏。I(Isolati
MySQL:锁
lock & latch lock latch 对象 事务 线程 保护 数据库内容 内存数据结构 持续时间 整个事务过程 临界资源 模式 行锁、表锁、意向锁 读写锁、互斥锁 死锁 通过 wait-for graph、time out 等机制进行死锁检测与处理 无死锁检测与处理机制。仅通过应用程序加
MySQL:optimizer_switch
查看mysql> SELECT @@optimizer_switch\G; *************************** 1. row *************************** @@optimizer_switch: index_merge=on,index_merge_union=on,index_merge_sort_union=on,index_merg
MySQL:索引介绍
索引概述 B+ 树索引全文索引哈希索引 数据结构与算法二分查找法折半查找法 二叉查找树和平衡二叉树 B+ 树插入 插入 28插入 70根据中间的值 60 来拆分叶子节点插入 95 删除 删除 70删除 25将 25 的右兄弟节点的 28 跟新到 Page Index 中删除 60Fill Factor 小于 50%,需要做合并操作 B+ 树索引查找某一键值的行记录时最多只需
MySQL:表简介
索引组织表主键 判断表中是否有非空的 Unique 索引,有的话选择第一个定义的非空 Unique 索引作为主键没有的话自动创建 6 字节大小的指针。 _rowid 可以显示表的主键,仅限于单列主键 InnoDB 逻辑存储结构区每个区的大小都是 1 MB。创建表初始先用 32 个页大小的碎片页来存放数据,在使用完这些页之后才是 64 个连续的页的申请。 页 数据页undo 页系统页事务数
MySQL:MySQL文件结构
参数文件告诉 MySQL 实例启动时在哪里可以找到数据库文件,并且制定某些初始化参数,这些参数定义了某种内存结构的大小等设置,还会介绍各种参数的类型。 查看 SHOW VARIABLES LIKE '%%'; SELECT * FROM GLOBAL_VARIABLES 日志文件用来记录 MySQL 实例对某种条件作出响应时写入的文件。 错误日志 (error l
MySQL:5.6升级到5.7的sql_mode
异常GROUP BY 语句报错 Error Code: 1055. Expression #3 of SELECT list is not in GROUP BY clause and contains nonaggregated column ‘×××’ which is not functionally dependent on columns in GROUP BY clause; thi
MySQL:5.7升级8.0——升级检查
安装 下载检查工具https://dev.mysql.com/downloads/shell/ 选择所需要的系统版本 检查工具安装 rpm -ivh mysql-shell-8.0.33-1.el7.x86_64.rpm 检查mysqlsh版本,确定指向无误 mysqlsh --version 升级检查进行升级检查,使用如下命令 mysqlsh -- util chec
MySQL:Innodb 关键特性
插入缓冲 (Insert Buffer)Insert BufferInsert Buffer 和数据页一样,是物理页的一个组成部分。 对于非聚集索引的插入或更新操作,不是每一次直接插入到索引页中,而是先判断插入的非聚集索引页是否在缓冲池中,若在,则直接插入;若不在,则先放入到一个Insert Buffer对象中,。然后再以一定的频率和情况进行Insert Buffer和辅助索引叶子节点的 mer