数据库
文章平均质量分 85
数据库类博客收录
小王曾是少年
通信工程本硕 for NJU ;
《Intelligent Passive Eavesdropping in Massive MIMO-OFDM Systems via Reinforcement Learning》IEEE WCL 作者;
申请国家发明专利2项;
淘天集团后端开发;
有事尽量私信
展开
-
Redis使用单线程却快到飞起的原因,全在这里了
???? Java学习:Java从入门到精通总结???? Spring系列推荐:Spring源码解析???? 最近更新:2022年1月13日???? 个人简介:通信工程本硕????、阿里新晋猿同学????。我的故事充满机遇、挑战与翻盘,欢迎关注作者来共饮一杯鸡汤???? 点赞 ???? 收藏 ⭐留言 ???? 都是我最大的动力!...原创 2022-02-23 16:27:12 · 8203 阅读 · 101 评论 -
面试官:如何设计一个Mysql的主备并行复制策略
文章目录1 并行复制能力2 自己设计的并行复制策略2.1 按表分发策略2.2 按行分发策略3 MySQL 5.6版本的并行复制策略4 MariaDB的并行复制策略5 MySQL 5.7的并行复制策略6 MySQL 5.7.22的并行复制策略7 基于WRITESET的并行复制练习在上面提到的场景里,不论是偶发性的查询压力,还是备份,对备库延迟的影响一般是分钟级的,而且在备库恢复正常以后都能够追上来。如果备库执行日志的速度持续低于主库生成日志的速度,那这个延迟就有可能成了小时级别。而且对于一个压力持续比较高转载 2021-03-28 14:52:24 · 417 阅读 · 3 评论 -
MySQL高可用机制分析
文章目录1 主备延迟2 主备延迟的来源2.1 备库所在机器的性能要比主库所在的机器性能差2.2 备库的压力大2.3 大事务3 可靠性优先策略4 可用性优先策略5 可靠性优先时的异常切换6 关于备库延迟监控的思考在一个主备关系中,每个备库接收主库的binlog并执行。正常情况下,只要主库执行更新生成的所有binlog,都可以传到备库并被正确地执行,备库就能达到跟主库一致的状态,这就是最终一致性。但是,MySQL要提供高可用能力,只有最终一致性是不够的。图 1 MySQL主备切换流程–双M结构1 主转载 2021-02-02 20:45:43 · 241 阅读 · 1 评论 -
MySQL主备一致基本原理
文章目录1 MySQL主备的基本原理2 节点A到B这条线的内部流程3 binlog的三种格式对比3.1 statement3.2 row3.3 mixed4 循环复制问题5 进一步讨论循环复制问题MySQL能够成为现下最流行的开源数据库,binlog功不可没。1 MySQL主备的基本原理图 1 MySQL主备切换流程在状态1中,客户端的读写都直接访问节点A,而节点B是A的备库,只是将A的更新都同步过来,到本地执行。这样可以保持节点B和A的数据是相同的。当需要切换的时候,就切成状态2。在状态转载 2021-01-28 21:14:36 · 592 阅读 · 0 评论 -
八大案例搞懂Mysql加锁规则
Mysql中有很多种类的锁,表锁、行锁、读锁、写锁、Gap锁等等等等,加锁规则也有所差别,这里把我之前做过的分享ppt拿出来为大家好好梳理一下,通过八个经典案例一次性搞懂这些加锁规则!ps:需要资源请联系公众号先约束一下Mysql的版本,不同版本的实验结果可能有偏差。这里先用一个极端的例子引入一下间隙锁(Gap锁)的概念:语句的先后执行顺序我用紫色箭头标识出来了:幻读出现了:间隙锁的概念:间隙锁和行锁的对比,其实二者差异还挺大的,具体见ppt:引入了间隙锁的概念之后,就原创 2021-01-25 21:23:23 · 286 阅读 · 2 评论 -
MySQL保护数据不丢失机制介绍
目录1binlog的写入机制2 redo log的写入机制3 组提交3.1 日志逻辑序列号(log sequence number,LSN)3.2 组提交1binlog的写入机制binlog的写入逻辑比较简单:事务执行过程中,先把日志写到binlog cache,事务提交的时候,再把binlog cache写到binlog文件中。一个事务的binlog是不能被拆开的,因此不论这个事务多大,也要确保一次性写入。这就涉及到了binlog cache的保存问题。系...转载 2021-01-08 00:27:36 · 285 阅读 · 0 评论 -
MySQL查询一行数据居然超时了
文章目录1 查询长时间不返回1.1 等MDL锁准备数据库:CREATE TABLE `t` ( `id` int(11) NOT NULL, `c` int(11) DEFAULT NULL, PRIMARY KEY (`id`)) ENGINE=InnoDB;delimiter ;;create procedure idata()begin declare i int; set i=1; while(i<=100000)do insert into t转载 2020-12-18 23:55:44 · 637 阅读 · 0 评论 -
MySQL中orderBy的工作原理
文章目录1 全字段排序给定一个表的定义:CREATE TABLE `t` ( `id` int(11) NOT NULL, `city` varchar(16) NOT NULL, `name` varchar(16) NOT NULL, `age` int(11) NOT NULL, `addr` varchar(128) DEFAULT NULL, PRIMARY KEY (`id`), KEY `city` (`city`)) ENGINE=InnoDB; 如果转载 2020-12-10 23:03:09 · 575 阅读 · 0 评论 -
MySQL删除数据前后,表文件大小相同,原因是...
文章目录1 参数innodb_file_per_table2 数据删除流程 一个InnoDB表包含两部分,即:表结构定义和数据。在MySQL 8.0版本以前,表结构是存在以.frm为后缀的文件里。MySQL 8.0版本允许把表结构定义放在系统数据表中。因为表结构定义占用的空间很小,所以主要讨论的是表数据。1 参数innodb_file_per_table 表数据既可以存在共享表空间里,也可以是单独的文件。这个行为是由参数innodb_file_per_table控制的:设置为OFF:表的数转载 2020-11-26 00:01:55 · 341 阅读 · 0 评论 -
MySQL 的 count(*)太慢了该怎么办?
文章目录1 count(*)的实现方式2 用缓存系统保存计数3 在数据库保存计数4 不同的count用法的性能区别4.1 count(主键id)4.2 count(1)4.3 count(字段)4.4 count(*)是例外1 count(*)的实现方式在不同的MySQL引擎中,count(*)有不同的实现方式。MyISAM引擎把一个表的总行数存在了磁盘上,因此执行count(*)的时候会直接返回这个数,效率很高;InnoDB引擎比较麻烦,执行count(*)的时候,需要把数据一行一行地从引擎里面转载 2020-11-20 22:27:49 · 1100 阅读 · 0 评论 -
MySQL一会儿快,一会儿慢的,我该怎么办?
一条SQL语句,正常执行的时候特别快,但是有时也不知道怎么回事,它就会变得特别慢,并且这样的场景很难复现,它不只随机,而且持续时间还很短。看上去,这就像是数据库“抖”了一下。文章目录1 SQL语句为什么变慢了1.1 什么情况会引发数据库的flush过程?1.2 上面四种场景对性能的影响2 InnoDB刷脏页的控制策略2.1 设计策略控制刷脏页的速度,会参考哪些因素?1 SQL语句为什么变慢了 Mysql中的WAL机制,InnoDB在处理更新语句的时候,只做了写日志这一个磁盘操作。这个日志叫作r转载 2020-11-13 20:59:14 · 1601 阅读 · 0 评论 -
MySQL给字符串字段加索引的策略(前缀索引、覆盖索引)
文章目录1 给字符串字段加索引1 给字符串字段加索引 几乎所有的系统都支持邮箱登录,现在维护一个支持邮箱登录的系统,用户表是这么定义的:create table SUser(ID bigint unsigned primary key,email varchar(64), ... )engine=innodb; 由于要使用邮箱登录,所以业务代码中一定会出现类似于这样的语句:...转载 2020-10-14 21:38:08 · 1316 阅读 · 0 评论 -
MySQL扫描行数会影响索引选择(坑别踩)
文章目录1 选错索引的现象2 优化器的逻辑3 索引选择异常和处理3.1 采用force index强行选择一个索引3.2 第二种方法3.3 第三种方法3.4 第四种方法4 例子中force index(a)的扫描行数为什么是370001 选错索引的现象 在MySQL中一张表可以支持多个索引。但是,写SQL语句的时候并没有主动指定使用哪个索引,使用哪个索引是由MySQL来确定的。 一条本来可以执行得很快的语句,却可能由于MySQL选错了索引会导致执行速度变得很慢。 创建一个简单的表,表里有a、b转载 2020-10-13 15:47:46 · 3723 阅读 · 5 评论 -
Mysql普通索引和唯一索引的选择策略
文章目录1 问题提出2 查询过程3 更新过程3.1 change buffer3.2 使用change buffer的条件3.3 表中插入记录(4,400)的处理流程4 change buffer的使用场景4.1 主机异常重启,是否会丢失change buffer和数据5 索引选择和实践6 change buffer 和 redo log1 问题提出 假设要维护一个市民系统,每个人都有一个唯一的身份证号,如果市民系统需要按照身份证号查姓名,就会执行类似这样的SQL语句:select name fro转载 2020-10-11 21:05:21 · 361 阅读 · 0 评论 -
深入浅出Mysql索引
文章目录 在下面这个表T中,如果执行 select * from T where k between 3 and 5,需要执行几次树的搜索操作,会扫描多少行?create table T (ID int primary key,k int NOT NULL DEFAULT 0, s varchar(16) NOT NULL DEFAULT '',index k(k))engine=InnoDB;insert into T values(100,1, 'aa'),(200,2,'bb'),原创 2020-10-09 22:12:53 · 437 阅读 · 0 评论 -
MySQL事务隔离
文章目录1 事务隔离:为什么你改了我还看不见1.1 隔离性与隔离级别1.2 事务隔离的实现1.3 事务的启动方式1.4 避免长事务对业务的影响1.5 如何删除表中的前10000行数据2 事务到底是隔离的还是不隔离的2.1 “快照”在MVCC里是怎么工作的1 事务隔离:为什么你改了我还看不见 MySQL是一个支持多引擎的系统,但并不是所有的引擎都支持事务。比如MySQL原生的MyISAM引擎就不支持事务,这也是MyISAM被InnoDB取代的重要原因之一。1.1 隔离性与隔离级别 SQL标准的事务转载 2020-10-05 13:23:25 · 393 阅读 · 0 评论 -
Mysql的全局锁、表锁、行锁
数据库锁设计的初衷是处理并发问题。作为多用户共享的资源,当出现并发访问的时候,数据库需要合理地控制资源的访问规则。而锁就是用来实现这些访问规则的重要数据结构。1 全局锁全局锁就是对整个数据库实例加锁。MySQL提供了一个加全局读锁的方法,命令是Flush tables with read lock (FTWRL)当你需要让整个库处于只读状态的时候,可以使用这个命令,之后其他线程的以下语句会被阻塞:数据更新语句(数据的增删改)、数据定义语句(包括建表、修改表结构等)和更新...转载 2020-09-30 17:54:11 · 367 阅读 · 0 评论 -
一条SQL查询、更新语句是如何执行的(基础架构,日志系统,redo log、binlog)
1 一条SQL查询语句是如何执行的如果有个最简单的表,表里只有一个ID字段,在执行下面这个查询语句时:select * from T where ID=10;看到的只是输入一条语句,返回一个结果,却不知道这条语句在MySQL内部的执行过程。下面我给出的是MySQL的基本架构示意图,从中你可以清楚地看到SQL语句在MySQL的各个功能模块中的执行过程。大体来说,MySQL可以分为Server层和存储引擎层两部分。Server层包括连接器、查询缓存、分析器、...转载 2020-09-29 15:16:43 · 415 阅读 · 0 评论 -
redis编码及数据结构
1 redis简单入门redis是一款高性能的NOSQL系列的非关系型数据库1.1NOSQLNOSQL(NOSQL = Not Only SQL),是一项全新的数据库理念,泛指非关系型的数据库。随着互联网web2.0网站的兴起,传统的关系数据库在应付web2.0网站,特别是超大规模和高并发的SNS类型的web2.0纯动态网站已经显得力不从心,暴露了很多难以克服的问题,而非关系型的数据库则由于其本身的特点得到了非常迅速的发展。NoSQL数据库的产生就是为了解决大规模数据集合多重...原创 2020-09-27 13:52:22 · 334 阅读 · 0 评论 -
慢查询与MySQL语句优化
目录1 慢查询2 Mysql语句优化2.1 数据准备2.2 EXPLAIN语句2.3 添加索引2.4 适当建立索引2.5合理使用索引2.5.1 不要在列上使用函数和进行运算2.5.2 类型要匹配2.5.3 首部不出现通配符2.5.4 多个单列索引并不是最佳选择2.5.5 小心复合索引的最左侧原则2.5.6尽可能达成索引覆盖如果我们了解了Mysql中的索引原理之后,(详见探秘数据库 —— 事务 + InnoDB存储引擎),如何利用索引并对一些执...原创 2020-09-16 17:12:57 · 243 阅读 · 0 评论 -
Mysql事务 + InnoDB存储引擎
1 什么是事务原创 2020-09-14 21:49:22 · 271 阅读 · 0 评论