
MySQL相关
文章平均质量分 89
MySQL相关
一直不懂
笔记
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
明明加了唯一索引,为什么还是产生重复数据?
前段时间我踩过一个坑:在mysql8的一张innodb引擎的表中,加了唯一索引,但最后发现数据竟然还是重复了。到底怎么回事呢?本文通过一次踩坑经历,聊聊唯一索引,一些有意思的知识点。转载 2022-09-24 15:58:06 · 608 阅读 · 0 评论 -
InnoDB一棵B+树可以存放多少行数据?
一个问题?InnoDB一棵B+树可以存放多少行数据?这个问题的简单回答是:约2千万。为什么是这么多呢?因为这是可以算出来的,要搞清楚这个问题,我们先从InnoDB索引数据结构、数据组织方式说起。我们都知道计算机在存储数据的时候,有最小存储单元,这就好比我们今天进行现金的流通最小单位是一毛。在计算机中磁盘存储数据最小单元是扇区,一个扇区的大小是512字节,而文件系统(例如XFS/EXT4)他的最小单元是块,一个块的大小是4k,而对于我们的InnoDB存储引擎也有自己的最小储存单元——页(Page),一个页转载 2022-01-18 23:31:49 · 216 阅读 · 0 评论 -
MySQL解惑——GROUP BY隐式排序
MySQL中GROUP BY隐式排序是什么概念呢? 主要是其它RDBMS没有这样的概念,如果没有认真了解过概念,对这个概念会感觉有点困惑,我们先来看看官方文档的介绍:官方文档MySQL 5.7 Reference Manual中的“.2.1.14 ORDER BY Optimization”章节有如下介绍:GROUP BY implicitly sorts by default (that is, in the absence of ASC or DESC designators for GROUP转载 2021-10-10 13:46:03 · 757 阅读 · 0 评论 -
MySQL Online DDL ALGORITHM区别
导读:MySQL的Online DDL长期饱受诟病,8.0之后有没有好一些呢…本文重点讨论常见的几种Online DDL需求:增加新列(ADD COLUMN)修改列定义(MODIFY COLUMN)增加/删除索引(ADD/DROP INDEX)其他的DDL操作相对比较少,所以本文就不讨论了。此外,本文也不讨论非InnoDB引擎以及非普通索引(如全文索引、空间索引)的场景。我们先看下ALTER TABLE时ALGORITHM可以指定的几种方式:COPY ,是指DDL时,会生成(临时)新表转载 2021-09-30 12:51:41 · 1919 阅读 · 0 评论 -
Binlog中的时间戳
小编说:本文从一个典型的案例入手来讲述Binlog中时间戳的原理和实践,通过本文你可以了解时间戳在Binlog中的作用及产生方法,以便在出现一些这方面怪异的问题时,做到心中有数,胸有成竹。本文选自《MySQL运维内参》背景众所周知,在Binlog文件中,经常会看到关于事件的时间属性,出现的方式都是如下这样的。#161213 10:11:35 server id 11766 end_log_pos 263690453 CRC32 0xbee3aaf5 Xid = 83631678我们清楚地知道,1转载 2021-05-30 17:52:48 · 1685 阅读 · 0 评论 -
mysql insert 加锁流程
INSERT sets an exclusive lock on the inserted row. This lock is an index-record lock, not a next-key lock (that is, there is no gap lock) and does not prevent other sessions from inserting into the gap before the inserted row.insert 会对插入成功的行加上排他锁。这个锁不是索引记转载 2021-03-01 12:14:31 · 2949 阅读 · 0 评论 -
MySQL常用命令
MySQL视图相关创建视图mysql> create view v_t as select * from t where id<10;视图定义中的 WITH CHECK OPTION就是针对于可更新的视图的,即更新的值是否需要检查mysql> alter view v_t as select * from t where id<10 with check option;SHOW TABLES命令把表和视图都显示出来mysql> show tables;若用原创 2021-01-31 14:06:03 · 971 阅读 · 0 评论 -
Semi-join Materialization 子查询优化策略
什么是 Semi-join常规联接中,结果可能会出现重复值,而子查询可以获得无重复的结果。比如需要找出有人口大于 2000 万的城市的国家,如果用普通联接,则可能出现重复结果:select country.* from country join city on country.code=city.country_code and population>20000000;+---------+----------+| code | name |+---------+-------转载 2021-01-03 17:27:06 · 474 阅读 · 0 评论 -
MySQL的MVCC
MVCC(Mutil-Version Concurrency Control),就是多版本并发控制。MVCC 是一种并发控制的方法,一般在数据库管理系统中,实现对数据库的并发访问。在Mysql的InnoDB引擎中就是指在已提交读(READ COMMITTD)和可重复读(REPEATABLE READ)这两种隔离级别下的事务对于SELECT操作会访问版本链中的记录的过程。这就使得别的事务可以...转载 2019-06-19 00:00:35 · 743 阅读 · 0 评论 -
谈谈你对Mysql的MVCC的理解?
MVCC(Mutil-Version Concurrency Control),就是多版本并发控制。MVCC 是一种并发控制的方法,一般在数据库管理系统中,实现对数据库的并发访问。在Mysql的InnoDB引擎中就是指在已提交读(READ COMMITTD)和可重复读(REPEATABLE READ)这两种隔离级别下的事务对于SELECT操作会访问版本链中的记录的过程。这就使得别的事务可以...转载 2019-06-19 00:09:16 · 867 阅读 · 0 评论 -
MySQL在线DDL gh-ost 使用说明
背景: 作为一个DBA,大表的DDL的变更大部分都是使用Percona的pt-online-schema-change,本文说明下另一种工具gh-ost的使用:不依赖于触发器,是因为他是通过模拟从库,在row binlog中获取增量变更,再异步应用到ghost表的。在使用gh-ost之前,可以先看GitHub 开源的 MySQL 在线更改 Schema 工具【转】文章或则官网了解其特...转载 2020-03-04 21:20:01 · 833 阅读 · 0 评论 -
MySQL的InnoDB索引原理详解
摘要: 本篇介绍下Mysql的InnoDB索引相关知识,从各种树到索引原理到存储的细节。 InnoDB是Mysql的默认存储引擎(Mysql5.5.5之前是MyISAM,文档)。本着高效学习的目的,本篇以介绍InnoDB为主,少量涉及MyISAM作为对比。 这篇文章是我在学习过程中总结完成的,内容主要来自书本和博客(参考文献会给出),过程中加入了一些自己的理解,描述不准确的地方烦...转载 2019-12-29 01:41:35 · 275 阅读 · 0 评论 -
MySQL索引背后的数据结构及算法原理
摘要本文以MySQL数据库为研究对象,讨论与数据库索引相关的一些话题。特别需要说明的是,MySQL支持诸多存储引擎,而各种存储引擎对索引的支持也各不相同,因此MySQL数据库支持多种索引类型,如BTree索引,哈希索引,全文索引等等。为了避免混乱,本文将只关注于BTree索引,因为这是平常使用MySQL时主要打交道的索引,至于哈希索引和全文索引本文暂不讨论。文章主要内容分为三个部分。第...转载 2019-12-29 01:59:41 · 175 阅读 · 0 评论