MySQL
文章平均质量分 87
个人的MySQL笔记
~庞贝
Go后端开发
展开
-
如何解决 bin log 与 redo log 的一致性问题
MySQL Server 层拥有的 bin log 只能用于归档,不足以实现崩溃恢复(crash-safe),需要借助 InnoDB 引擎的 redo log 才能拥有崩溃恢复的能力。所谓崩溃恢复就是:即使在数据库宕机的情况下,也不会出现操作一半的情况,至于为什么说 redo log 具有崩溃恢复的能力,而 bin log 没有,我们先来简单看一下这两种日志有哪些不同点:1)2)3)可以看到,redo log 和 bin log 的一个很大的区别就是,一个是循环写,一个是追加写。原创 2022-10-13 16:00:03 · 1257 阅读 · 0 评论 -
MySQL之什么是 MVCC?MVCC的实现原理?
什么是MVCC?MVCC的实现原理?原创 2022-06-17 22:12:38 · 305 阅读 · 0 评论 -
MySQL之InnoDB中的三种行锁(记录锁、间隙锁与临键锁)
4.间隙锁Gap Locks5.临键锁Next-Key Locks6.总结1.InnoDB 中的行锁的实现依赖于索引,一旦某个加锁操作没有使用到索引,那么该锁就会退化为表锁。2.记录锁存在于包括主键索引在内的唯一索引中,锁定单条索引记录。3.间隙锁存在于非唯一索引中,锁定开区间范围内的一段间隔,它是基于临键锁实现的。4.临键锁存在于非唯一索引中,该类型的每条记录的索引上都存在这种锁,它是一种特殊的间隙锁,锁定一段左开右闭的索引区间。...原创 2022-06-17 18:33:38 · 748 阅读 · 0 评论 -
MySQL之锁-表级锁
2.3表独占写锁2.3.1特点2.2.3释放锁3.元数据锁3.1概念3.2分类3.4操作讲解4.4没有意向锁原创 2022-06-17 17:55:09 · 1880 阅读 · 0 评论 -
MySQL之锁-全局锁
全局锁就是对整个数据库实例加锁,即数据库中的所有表都将被加上锁,加锁后整个实例就处于只读状态,后续的DML的写语句,DDL语句,已经更新操作的事务提交语句都将被阻塞原创 2022-06-17 15:27:02 · 133 阅读 · 0 评论 -
MySQL之MySQL优化
在阿里巴巴《Java开发手册》中,对超大分页的解决办法是类似于上面提到的第一种:类似的问题:某个表有近千万数据,CRUD比较慢,如何优化?分库分表了是怎么做的?分表分库了有什么问题?有用到中间件么?他们的原理知道么?...原创 2022-06-05 16:28:28 · 102 阅读 · 0 评论 -
MySQL之多表查询
2.多表查询分类3.笛卡尔积语法4.演示(笛卡尔积)8.演示(左外连接语法)10.演示(右外连接语法)原创 2022-06-05 15:58:28 · 114 阅读 · 0 评论 -
MySQL之分库分表
cobarTDDLatlassharding-jdbcmycat两种分库分表的方式:原创 2022-06-04 13:36:50 · 723 阅读 · 0 评论 -
MySQL之主从复制
下述是8.0.23中的语法:如果mysql是 8.0.23 之前的版本,执行如下SQL:原创 2022-06-03 10:59:51 · 203 阅读 · 0 评论 -
MySQL日志
windos下:Linux下:Docker下:windos下查看:6.删除二进制文件windos下:Linux下:Docker下:原创 2022-06-03 09:59:20 · 138 阅读 · 0 评论 -
MySQL之数值函数
案例:MySQL之数值函数原创 2022-06-02 20:52:14 · 259 阅读 · 0 评论 -
MySQL之DQL查询表中的记录
4.where条件查询and 或 &&BETWEEN…ANDor 或 ||IN( 集合)IS NULL 、 IS NOT NULLLIKE:模糊查询占位符:_:单个任意字符%:多个任意字符原创 2022-06-02 16:50:23 · 70 阅读 · 0 评论 -
MySQL之存储函数
MySQL之存储函数原创 2022-06-02 16:22:54 · 166 阅读 · 0 评论 -
MySQL之变量
在MySQL中变量分为三种类型: 系统变量、用户定义变量、局部变量3.5设置系统变量4.用户定义变量4.1介绍4.2赋值4.3使用5.局部变量5.1介绍5.2声明5.3赋值6.演示(like模糊匹配)原创 2022-06-02 15:53:12 · 2924 阅读 · 0 评论 -
MySQL之DDL操作表
MySQL之DDL操作表原创 2022-06-01 19:19:48 · 116 阅读 · 0 评论 -
MySQL之存储过程
4.调用存储过程5.查询数据库存储过程及状态信息6.查询存储过程定义7.删除存储过程8.if9.参数用法:10.case11.while13.loop14.cursor14.1介绍14.2声明14.3打开14.4 获取14.5关闭15.Handler16.演示(基本)先创建一个表原创 2022-06-01 18:55:13 · 562 阅读 · 0 评论 -
MySQL之视图
2.2OR REPLACE2.3检查选项2.4CASCADED方式一:方式二:4.删除视图5.查询视图数据6.查询创建视图语句7.查询数据库中视图8.更新视图9.演示(未一一对应)15.演示(删表后视图无效)原创 2022-06-01 17:13:45 · 797 阅读 · 0 评论 -
MySQL之InnoDB存储引擎-MVCC
目录MySQL之InnoDB存储引擎-MVCC1.当前读2.快照读3.操作讲解(快照读)4.操作讲解(当前读)5.MVCC6.隐藏字段6.1介绍6.2查看有主键的表6.3查看无主键的表7.undo log7.1介绍7.2版本链8.readview读视图9.原理分析9.1RC隔离级别9.2RR隔离级别MySQL之InnoDB存储引擎-MVCC1.当前读读取的是记录的最新版本,读取时还要保证其他并发事务不能修改当前记录,会对读取的记录进行加锁。对于我们日常的操作,如:select … lock in s原创 2022-05-31 21:21:51 · 389 阅读 · 0 评论 -
MySQL之InnoDB存储引擎-事务原理
目录MySQL之InnoDB存储引擎-事务原理1.事务原理2.redo log2.1介绍2.2没redo log分析2.3有redo log时分析3.undo logMySQL之InnoDB存储引擎-事务原理1.事务原理那实际上,我们研究事务的原理,就是研究MySQL的InnoDB引擎是如何保证事务的这四大特性的;而对于这四大特性,实际上分为两个部分。 其中的原子性、一致性、持久化,实际上是由InnoDB中的两份日志来保证的,一份是redo log日志,一份是undo log日志。而隔离性是通过原创 2022-05-31 17:20:21 · 901 阅读 · 2 评论 -
MySQL之InnoDB存储引擎-架构
目录MySQL之InnoDB存储引擎-架构1.InnoDB存储引擎架构图2.内存结构2.1Buffer Pool缓冲池2.2Change Buffer更改缓冲区2.3AdaptiveHash Index自适应哈希索引2.4Log Buffer日志缓冲区3.磁盘结构3.1System Tablespace系统表空间3.2File-Per-Table Tablespaces每张表的独立表空间3.3General Tablespaces通用表空间3.4Undo Tablespaces撤销表空间3.5Tempora原创 2022-05-31 17:02:53 · 418 阅读 · 0 评论 -
MySQL之InnoDB存储引擎-逻辑存储结构
目录MySQL之InnoDB存储引擎-逻辑存储结构1.InnoDB逻辑存储结构图2.表空间3.段4.区5.页6.行MySQL之InnoDB存储引擎-逻辑存储结构1.InnoDB逻辑存储结构图2.表空间表空间是InnoDB存储引擎逻辑结构的最高层, 如果用户启用了参数 innodb_file_per_table(在8.0版本中默认开启) ,ibd文件其实就是表空间文件,则每张表都会有一个表空间(xxx.ibd),一个mysql实例可以对应多个表空间,用于存储记录(即表中数据)、索引等数据,在表空间原创 2022-05-31 12:49:50 · 156 阅读 · 0 评论 -
MySQL数据类型
目录MySQL之数据类型1.分类2.数值类型2.1分类2.2int整数类型2.3double(x,y)小数类型2.4tinyint2.5decimal3.字符串类型3.1分类3.2varchar(x)字符串类型4.日期类型4.1分类4.2date日期类型4.3datetime日期类型(年月日)4.4timestamp时间戳类型(年月日时分秒)5.varchar(x)5.0.3版本前后变化6.int(10)和char(10)的区别7.char(x)与varchar(x)的区别8.char(10)在utf8编码原创 2022-05-31 12:37:42 · 203 阅读 · 0 评论 -
MySQL行级锁
目录MySQL行级锁1.行级锁分类2.行锁(Record Locks)2.1概念2.2分类、兼容互斥情况2.3查看意向锁与行锁2.4操作讲解(共享锁与共享锁兼容)2.5操作讲解(共享锁与排他锁互斥)2.6操作讲解(排他锁与排他锁互斥)2.7操作讲解(无索引行锁升级为表锁)3.间隙锁&临键锁(Gap Locks&Next-Key Lock)3.1间隙锁概念3.2临键锁概念3.3间隙锁&临键锁3.4查看间隙锁&临键锁、行锁、意向锁3.5操作讲解(等值查询唯一索引)3.6操作讲解(原创 2022-05-31 10:44:06 · 3280 阅读 · 0 评论 -
MySQL四种SQL性能分析工具
目录MySQL四种SQL性能分析工具1.SQL性能分析2.查看SQL执行频率3.慢查询日志3.1概念3.2查看慢查询日志变量、文件、时间3.3.开启慢查询日志3.4设置慢查询时间3.5查看慢查询日志文件3.6使用慢查询日志3.7检查慢查询日志4.profile详情4.1profile4.2查看是否支持profile4.3查看profile开关4.4开启profiling4.5使用profile4.5.1查看每条SQL耗时4.5.2查看指定SQL各阶段耗时4.5.3查看指定SQL各阶段CPU使用情况5.exp原创 2022-05-31 08:52:37 · 3909 阅读 · 0 评论 -
MySQL索引
目录MySQL之索引1.索引概念2.索引优缺点3.索引作用4.索引数据结构分类5.无索引6.B+树索引6.1标准B+Tree6.2优化B+Tree7.哈希索引8.空间索引9.不同引擎支持的索引结构10.B树(B-树)(多路平衡查找树)10.1介绍11.为什么InnoDB存储引擎选择使用B+tree索引结构12.查看索引命令13.MyISAM 索引与 InnoDB 索引的区别14.使用索引查询一定能提高查询的性能吗MySQL之索引1.索引概念索引是存储引擎用于提高数据库表的访问速度的一种数据结构索引原创 2022-05-30 21:33:48 · 158 阅读 · 0 评论 -
MySQL范式
目录MySQL知识点总结之范式1.范式概念2.三大范式概念3.函数依赖4.完全函数依赖5.部分函数依赖6.码、属性、(码)属性组7.NF和3NF的区别MySQL知识点总结之范式1.范式概念数据库设计的范式概念:设计数据库时,需要遵循的一些规范,遵从不同的规范要求,设计出合理的关系型数据库,这些不同的规范要求被称为不同的范式,各种范式呈递次规范(即要求越来越高),越高的范式数据库冗余越小。要遵循后边的范式要求,必须先遵循前边的所有范式要求目前关系数据库有六种范式:第一范式(1NF)、第二范式(原创 2022-05-30 20:26:44 · 91 阅读 · 0 评论 -
MySQ体系结构
目录MySQL知识总结之MySQ体系结构1.MySQ体系结构2.连接层2.1MySQL连接器3.服务层3.1服务层介绍3.2MySQL 查询缓存3.3MySQL分析器3.4MySQL优化器3.5MySQL执行器4.存储引擎层5.存储层MySQL知识总结之MySQ体系结构1.MySQ体系结构2.连接层接受客户端的连接、连接最大数量、验证账户密码、不同的客户端具有的权限(可以操作哪些数据、哪些表);连接层是MySQL体系架构的最上层,它可其他client-server架构一样,主要包含如下内容:原创 2022-05-30 15:27:52 · 138 阅读 · 0 评论 -
MySQL存储引擎
目录MySQL知识总结之存储引擎层1.四种存储引擎2.InnoDB存储引擎2.1介绍2.2优缺点2.3表空间文件2.4查看表空间文件2.5查看参数开关2.6特点3.MyISAM存储引擎3.1介绍3.2优缺点3.3文件3.4特点4.MEMORY存储引擎4.1介绍4.2优缺点4.3文件5.ARCHIVE存储引擎5.1介绍5.2优缺点6.查询当前表所用引擎7.建表时指定存储引擎(MyISAM存储引擎)8.建表时指定存储引擎(Memory存储引擎)9.查询当前数据库支持的存储引擎10.InnoDB、MyISAM、M原创 2022-05-29 12:10:53 · 286 阅读 · 0 评论 -
MySQL事务与隔离级别
MySQL之事务、隔离级别1.事务概念个最小的不可再分的工作单元;通常一个事务对应一个完整的业务(例如银行账户转账业务,该业务就是一个最小的工作单元),同时这个完整的业务需要执行多次的DML(insert、update、delete)语句共同联合完成。A转账给B,这里面就需要执行两次update操作。什么是数据库事务?事务是一个不可分割的数据库操作序列,也是数据库并发控制的基本单位,其执行的结果必须使数据库从一种一致性状态变到另一种一致性状态。事务是逻辑上的一组操作,要么都执行,要么都不执行。事务原创 2022-05-29 09:58:50 · 186 阅读 · 0 评论 -
MySQL的Join原理
目录Join原理Simple Nested-LoopIndex Nested-LoopBlock Nested-Loop总结Join优化Join原理mysql的join算法叫做Nested-Loop Join(嵌套循环连接)而这个Nested-Loop Join有三种变种,下面分别介绍下Simple Nested-Loop这个算法相当简单、直接。即驱动表中的每一条记录与被驱动表中的记录进行比较判断(就是个笛卡尔积)。对于两表联接来说,驱动表只会被访问一遍,但被驱动表却要被访问到好多遍假设R为驱动原创 2022-05-28 22:28:21 · 1536 阅读 · 0 评论 -
MySQL 优化的细节
目录MySQL 优化的细节SQL优化分页优化索引优化Join优化排序优化UNION优化慢查询日志设计优化尽量避免使用NULL最小数据长度使用最简单数据类型尽量少定义 text 类型适当分表、分库策略常见类型选择整数类型宽度设置VARCHAR和CHAR类型DATETIME和TIMESTAMP类型BLOB和TEXT类型范式化硬件优化磁盘网络内存MySQL 优化的细节MySQL常见的优化手段分为下面几个方面:SQL优化、设计优化,硬件优化等,其中每个大的方向中又包含多个小的优化点下面我们具体来看看SQ原创 2022-05-28 21:56:37 · 112 阅读 · 0 评论 -
MySQL 优化
目录优化说一说你对数据库优化的理解该如何优化MySQL的查询?使用索引:优化子查询:怎样插入数据才能更高效?表中包含几千万条数据该怎么办?MySQL的慢查询优化有了解吗?说一说你对explain的了解explain关注什么?优化说一说你对数据库优化的理解MySQL数据库优化是多方面的,原则是减少系统的瓶颈,减少资源的占用,增加系统的反应速度。例如,通过优化文件系统,提高磁盘I\O的读写速度;通过优化操作系统调度策略,提高MySQL在高负荷情况下的负载能力;优化表结构、索引、查询语句等使查询响应更快。转载 2022-05-27 21:42:38 · 93 阅读 · 0 评论 -
MySQL的慢查询优化
MySQL的慢查询优化优化MySQL的慢查询,可以按照如下步骤进行:开启慢查询日志:MySQL中慢查询日志默认是关闭的,可以通过配置文件my.ini或者my.cnf中的log-slow-queries选项打开,也可以在MySQL服务启动的时候使用–log-slow-queries[=file_name]启动慢查询日志。启动慢查询日志时,需要在my.ini或者my.cnf文件中配置long_query_time选项指定记录阈值,如果某条查询语句的查询时间超过了这个值,这个查询过程将被记录到慢查询日志文件原创 2022-05-27 21:16:29 · 510 阅读 · 0 评论 -
MySQL锁
目录MySQL锁了解数据库的锁吗?锁的类型:锁的粒度:锁的算法:关于死锁:锁的升级:介绍一下间隙锁InnoDB中行级锁是怎么实现的?数据库在什么情况下会发生死锁?说说数据库死锁的解决办法MySQL锁了解数据库的锁吗?锁是数据库系统区别于文件系统的一个关键特性,锁机制用于管理对共享资源的并发访问。下面我们以MySQL数据库的InnoDB引擎为例,来说明锁的一些特点。锁的类型:InnoDB存储引擎实现了如下两种标准的行级锁:共享锁(S Lock),允许事务读一行数据。排他锁(X Lock),允许转载 2022-05-27 20:50:59 · 70 阅读 · 0 评论 -
MySQL中的三种log
一、什么是binlogbinlog其实在日常的开发中是听得很多的,因为很多时候数据的更新就依赖着binlog。举个很简单的例子:我们的数据是保存在数据库里边的嘛,现在我们对某个商品的某个字段的内容改了(数据库变更),而用户检索的出来数据是走搜索引擎的。为了让用户能搜到最新的数据,我们需要把引擎的数据也改掉。一句话:数据库的变更,搜索引擎的数据也需要变更。于是,我们就会监听binlog的变更,如果binlog有变更了,那我们就需要将变更写到对应的数据源。什么是binlog?binlog记录了数原创 2022-05-24 12:50:47 · 1031 阅读 · 0 评论 -
如何保障 MySQL 和 Redis 的数据一致性?
如何保障 MySQL 和 Redis 的数据一致性?不好的方案先写 MySQL,再写 Redis图解说明:这是一副时序图,描述请求的先后调用顺序;橘黄色的线是请求 A,黑色的线是请求 B;橘黄色的文字,是 MySQL 和 Redis 最终不一致的数据;数据是从 10 更新为 11;后面所有的图,都是这个含义,不再赘述。请求 A、B 都是先写 MySQL,然后再写 Redis,在高并发情况下,如果请求 A 在写 Redis 时卡了一会,请求 B 已经依次完成数据的更新,就会出现图中的原创 2022-05-18 17:10:34 · 315 阅读 · 1 评论