
MySQL
文章平均质量分 80
MySQL相关的博客
FYHannnnnn
知道的越多,不知道的也就越多
展开
-
Mysql 分库分表
使用分库分表时,主要有垂直拆分和水平拆分两种拆分模式,都属于物理空间的拆分。分库分表方案:只分库、只分表、分库又分表。垂直拆分:由于表数量多导致的单个库大。将表拆分到多个库中。水平拆分:由于表记录多导致的单个库大。将表记录拆分到多个表中。一,垂直拆分垂直拆分又称为纵向拆分,垂直拆分是将表按库进行分离,或者修改表结构按照访问的差异将某些 列拆分出去。应用时有垂直分库和垂直分表两种方式,一般谈到的垂直拆分主要指的是垂直分库。垂直分库:垂直分表:将一张表中不常用的字段拆分到另一张.原创 2021-11-15 22:41:34 · 3033 阅读 · 3 评论 -
Mysql 分片,大数据量时扩容方案
分片概念:分片(Sharding)就是用来确定数据在多台存储设备上分布的技术。Shard这个词的意思是“碎片”,如 果将一个数据库当作一块大玻璃,将这块玻璃打碎,那么每一小块都称为数据库的碎片(Database Sharding)。将一个数据库打碎成多个的过程就叫做分片,分片是属于横向扩展方案。分片与分表的区别:分片:表示分配过程,是一个逻辑上概念,表示如何实现。分库分表:表示分配结果,是一个物理上概念,表示最终实现的结果分片策略:基于范围分片:根据特定的字段进行拆分,比如ID0-原创 2021-11-15 22:23:47 · 2352 阅读 · 0 评论 -
Mysql集群--双主模式
MySQL主从模式,一主多从、读写分离等。但是单主如果发生单点故障,从库切换成主库还需要作改动。因此,如果是双主或者多主,就会增加MySQL入口,提升了主库的可用性。 因此随着业务的发展,数据库架构可以由主从模式演变为双主模式。双主模式是指两台服务器互为主从,任何一台服务器数据变更,都会通过复制应用到另外一方的数据库中一, 双主双写&是双主单写双主双写存在以下问题:ID冲突在A主库写入,当A数据未同步到B主库时,对B主库写入,如果采用自动递增容易发生ID主键的冲 突...原创 2021-11-14 21:53:25 · 2581 阅读 · 0 评论 -
Mysql集群--主从模式
数据可以从一个MySQL数据库服务器主节点复制到一个或多个从节点。MySQL 默 认采用异步复制方式,这样从节点不用一直访问主服务器来更新自己的数据。一,主从复制主从复制整体分为以下三个步骤:主库将数据库的变更操作记录到Binlog日志文件中 从库读取主库中的Binlog日志文件信息写入到从库的Relay Log中继日志中 从库读取中继日志信息在从库中进行Replay,更新从库数据信息主从复制时序图:Master服务器对数据库更改操作记录在Binlog中,BinlogD..原创 2021-11-14 21:19:25 · 1428 阅读 · 1 评论 -
Mysql 事务与锁机制原理详细理解
一,ACID特性I,原子性原子性:事务是一个原子操作单元,其对数据的修改,要么全都执行,要么全都不执行。修改---》Buffer Pool修改---》刷盘。可能会有下面两种情况:事务提交了,如果此时Buffer Pool的脏页没有刷盘,如何保证修改的数据生效? Redo 如果事务没提交,但是Buffer Pool的脏页刷盘了,如何保证不该存在的数据撤销?Undo每一个写事务,都会修改BufferPool,从而产生相应的Redo/Undo日志,在Buffer Pool 中的页被刷到 磁.原创 2021-11-08 22:29:06 · 237 阅读 · 0 评论 -
Mysql 慢查询优化
一,问题分享面试问题一、 如何判断是否为慢查询?MySQL判断一条语句是否为慢查询语句,主要依据SQL语句的执行时间,它把当前语句的执 行时间跟 long_query_time 参数做比较,如果语句的执行时间 > long_query_time,就会把 这条执行语句记录到慢查询日志里面。long_query_time 参数的默认值是 10s,该参数值可 以根据自己的业务需要进行调整。面试问题二、如何判断是否应用了索引?SQL语句是否使用了索引,可根据SQL语句执行过程中有没有用到表的索原创 2021-11-05 23:20:51 · 172 阅读 · 0 评论 -
Mysql 索引优化
一,回表查询与覆盖索引这里在之前的Mysql博客中已经有提及,这里不多做解析。" data-link-title="mysql索引原理">mysql索引原理<contain: 回表查询>:>" data-link-title="Mysql 索引使用分析:Explain查询分析">Mysql 索引使用分析:Explain查询分析<contain :索引覆盖>:>二,最左前缀原则复合索引使用时遵循最左前缀原则,最左前缀顾名思义,就是最左优先,即原创 2021-11-05 21:44:35 · 191 阅读 · 0 评论 -
Mysql 索引使用分析:Explain查询分析
explain命令:select_type(查询类型):SIMPLE : 表示查询语句不包含子查询或union PRIMARY:表示此查询是最外层的查询 UNION:表示此查询是UNION的第二个或后续的查询 DEPENDENT UNION:UNION中的第二个或后续的查询语句,使用了外面查询结果 UNION RESULT:UNION的结果 SUBQUERY:SELECT子查询语句 ...原创 2021-11-04 23:21:48 · 652 阅读 · 0 评论 -
MySql 索引原理
索引的定义:是存储引擎用于快速查找记录的一种数据结构。需要额外开辟空间和数据维护工作。索引是物理数据页存储,在数据文件中(InnoDB,ibd文件),利用数据页(page)存储。 索引可以加快检索速度,但是同时也会降低增删改操作速度,索引维护需要代价。Mysql 索引涉及算法与结构: 二分查找法、hash索引结构(Memory引擎,Innodb中为自适应Hash索引)、B+Tree结构。一,B- Tree & B+TreeB-Tree结构:索引值和data数据分布在整棵树结构中.原创 2021-11-04 11:14:45 · 155 阅读 · 0 评论 -
Mysql 全文索引
引入概念通过数值比较、范围过滤等就可以完成绝大多数我们需要的查询,但是,如果希望通过关键字的匹配来进行查询过滤,那么就需要基于相似度的查询,而不是原来的精确数值比较。全文索引就是为这种场景设计的。你可能会说,用 like + % 就可以实现模糊匹配了,为什么还要全文索引?like + % 在文本比较少时是合适的,但是对于大量的文本数据检索,是不可想象的。全文索引在大量的数据面前,能比 like + % 快 N 倍,速度不是一个数量级,但是全文索引可能存在精度问题。你可能没有注意过全文索引,不转载 2021-11-02 16:39:48 · 188 阅读 · 2 评论 -
Mysql BinLog存储机制详解与数据恢复
一,BinLogRedo Log 是属于InnoDB引擎所特有的日志,而MySQL Server也有自己的日志,即 Binary log(二进制日志),简称Binlog。Binlog是记录所有数据库表结构变更以及表数据修改的二进制日志,不会记录SELECT和SHOW这类操作。Binlog日志是以事件形式记录,还包含语句所执行的消耗时间。一般情况下,开启Binlog日志有以下两个最重要的使用场景:主从复制:在主库中开启Binlog功能,这样主库就可以把Binlog传递给从库,从库拿到 Bin..原创 2021-10-27 14:26:45 · 1990 阅读 · 0 评论 -
InnoDB Redo log 存储机制详解
一,Redo LogRedo:顾名思义就是重做。以恢复操作为目的,在数据库发生意外时重现操作。Redo Log:指事务中修改的任何数据,将最新的数据备份存储的位置(Redo Log),被称为重做 日志。Redo Log 的生成和释放:随着事务操作的执行,就会生成Redo Log,在事务提交时会将产生 Redo Log写入Log Buffer,并不是随着事务的提交就立刻写入磁盘文件。等事务操作的脏页写入 到磁盘之后,Redo Log 的使命也就完成了,Redo Log占用的空间就可以重用(被..原创 2021-10-27 11:11:57 · 784 阅读 · 0 评论 -
InnoDB Undo Log工作与存储机制
一,UndoLogUndo:意为撤销或取消,以撤销操作为目的,返回指定某个状态的操作。Undo Log:数据库事务开始之前,会将要修改的记录存放到 Undo 日志里,当事务回滚时或者数 据库崩溃时,可以利用 Undo 日志,撤销未提交事务对数据库产生的影响。Undo Log产生和销毁:Undo Log在事务开始前产生;事务在提交时,并不会立刻删除undo log,innodb会将该事务对应的undo log放入到删除列表中,后面会通过后台线程purge thread进 行回收处理。Undo..原创 2021-10-27 10:44:45 · 621 阅读 · 0 评论 -
InnoDB 数据文件结构详解
一,InnoDB存储文件结构InnoDB数据文件存储结构: 一个ibd数据文件-->Segment(段)-->Extent(区)-->Page(页)-->Row(行)Tablesapce表空间,用于存储多个ibd数据文件,用于存储表的记录和索引。一个文件包含多个段。 Segment 段,用于管理多个Extent,分为数据段(Leaf node segment)、索引段(Non-leaf node segment)、回滚段(...原创 2021-10-26 16:32:51 · 1667 阅读 · 0 评论 -
MySql InnoDB线程模型
一,MySQL存储引擎InnoDB存储结构Mysql存储引擎结构详解二,线程模型IO Thread在InnoDB中使用了大量的AIO(Async IO)来做读写处理,这样可以极大提高数据库的性能。在 InnoDB1.0版本之前共有4个IO Thread,分别是write,read,insert buffer和log thread,后来 版本将read thread和write thread分别增大到了4个,一共有10个了。可以通过show engine inn...原创 2021-10-25 23:05:02 · 273 阅读 · 0 评论 -
Mysql Innodb存储引擎结构详解
一,Mysql支持的引擎Mysql支持存储引擎原创 2021-10-25 22:25:45 · 2794 阅读 · 0 评论 -
MySql存储引擎
查看Mysql自带的所有存储引擎与默认使用命令:show engines在5.5版本之前默认采用MyISAM存储引擎,从5.5开始采用InnoDB存储引擎。InnoDB:支持事务,具有提交,回滚和崩溃恢复能力,事务安全MyISAM:不支持事务和外键,访问速度快Memory:利用内存创建表,访问速度非常快,因为数据在内存,而且默认使用Hash索引,但是 一旦关闭,数据就会丢失Archive:归档类型引擎,仅能支持insert和select语句Csv:以CSV文件进行数据存储,由于.原创 2021-10-19 16:42:22 · 138 阅读 · 0 评论 -
Mysql SQL运行机制概述
一,建立连接(Connectors&Connection Pool)原创 2021-10-18 16:19:52 · 196 阅读 · 0 评论 -
MySql数据文件基本概念
db.opt 文件:记录这个库的默认使用的字符集和校验规则。frm 文件:存储与表相关的元数据(meta)信息,包括表结构的定义信息等,每一张表都会有一个frm 文件。MYD 文件:MyISAM 存储引擎专用,存放 MyISAM 表的数据(data),每一张表都会有一个.MYD 文件。MYI 文件:MyISAM 存储引擎专用,存放 MyISAM 表的索引相关信息,每一张 MyISAM 表对应一个 .MYI 文件。ibd文件和 IBDATA 文件:存放 InnoDB 的数据文件(包括索引原创 2021-10-09 10:56:56 · 265 阅读 · 1 评论 -
MySql 日志文件基本概念
一,错误日志(Error log)用于记录存放严重的警告与错误信息...(默认开启)查看错误日志位置 命令:show variables like '%log_error%';二,通用查询日志(General query log)用于记录查询语句 默认情况下为关闭状态通用查询日志文件路径命令:show variables like '%general%';★三,二进制日志(binary log)用于记录对Mysql数据所有的更改性的操作==》执行的一些更改操作...原创 2021-10-09 10:36:53 · 235 阅读 · 0 评论 -
InnoDB特性:Insert Buffer、double write、临近页刷新、启动与关闭恢复
1,Insert Buffer 在InnoDB存储引擎中,对于主键唯一索引,行记录一般按照递增的顺序进行插入,该方式不用磁盘去随机读取另一个页的记录 这样子的顺序插入速度很快。但是对于辅助索引,它不具备有唯一性,顺序性的插入往往还要根据列的具体特性来判断,比如 时间,这样子还稍有一些顺序,但是往往是没有顺序的。 对于非聚集索引的插入和更新的操作,并不是每一次的操作都会去插入到索引页当中去的,而是先判断非聚集索引页是否在缓冲池 中,如果在则直接的插入,但是如...原创 2021-04-05 21:18:30 · 233 阅读 · 0 评论 -
MySql重做日志与CheckPoint
1,Write Ahead Log页每一次发生的变化,都将新页的版本刷新到磁盘会导致IO次数增多,影响数据库的性能,所以引入了缓存的概念。但是数据的修改都存入到缓存中也会有以下几个问题: I. 缓冲池需要足够的大缓存数据库中的所有数据,内存的开销大大增多 II. 机器宕机时,会导致数据的丢失 Write Ahead Log的策略就是当事务提交的时候,先写重做日志,然后再修改页。2,CheckPoint做日志能够有效的防止宕机时数据丢失的问题,但是并不是每次都要将重...原创 2021-04-05 16:22:54 · 281 阅读 · 2 评论 -
MySQL高级 之 索引失效与优化详解
案例所用的表结构、索引、与数据如下:索引失效与优化原MySQL高级 之 索引失效与优化详解2017年05月16日 18:40:27 走慢一点点 阅读数 13917 标签: mysql 索引优化 索引失效 更多个人分类: MySQL 版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。本文链接:https:...转载 2019-08-15 17:58:50 · 118 阅读 · 0 评论 -
什么是 B 树?
本文提到的「B-树」,就是「B树」,都是 B-tree 的翻译,里面不是减号-,是连接符-。因为有人把 B-tree 翻成 「B-树」,让人以为「B树」和「B-树」是两种树,实际上两者就是同一种树。————————————————————————二叉查找树的结构:第1次磁盘IO:第2次磁盘IO:第3次磁盘IO:第4次磁盘IO:下面来具转载 2020-08-13 15:03:23 · 357 阅读 · 0 评论 -
MySql基础知识与性能优化理解
数据库基础知识为什么要使用数据库数据保存在内存优点: 存取速度快缺点: 数据不能永久保存数据保存在文件优点: 数据永久保存缺点:1)速度比内存操作慢,频繁的IO操作。2)查询数据不方便数据保存在数据库1)数据永久保存2)使用SQL语句,查询方便效率高。3)管理数据方便什么是SQL?结构化查询语言(Structured Query Language)简称SQL,是一种数据库查询语言。作用:用于存取数据、查询、更新和管理关系数据库系统。什么是MySQL转载 2020-08-13 16:15:04 · 314 阅读 · 0 评论 -
什么是B+树?
一个m阶的B树具有如下几个特征:1.根结点至少有两个子女。2.每个中间节点都包含k-1个元素和k个孩子,其中 m/2 <= k <= m3.每一个叶子节点都包含k-1个元素,其中 m/2 <= k <= m4.所有的叶子结点都位于同一层。5.每个节点中的元素从小到大排列,节点当中k-1个元素正好是k个孩子包含的元素的值域分划...转载 2020-08-13 15:05:27 · 385 阅读 · 0 评论