InnoDB使用B+树实现索引的原因


本文是对InnoDB索引和数据结构的更详细的补充。1、表空间在 MySQL 中,所有的数据都被存储在一个空间内,称之为表空间,表空间内部又可以分为段(segment)、区(extent)、页(page)、行(row),其逻辑结构如下图:1.1 段(segment)表空间是由不同的段组成的,常见的段有

MySQL类型转换索引命中问题


字符串字段误使用数字进行查询,会导致隐式类型转换,无法命中索引的坑我相信多数大佬都踩过。我们来思考以下场景的组合主键索引是varchar,where条件使用int主键索引是bigint,where条件使用string普通索引是varchar,where条件使用int普通索引是bigint,where

分表后某一个用户大量写入的思考


软件工程没有银弹,该堆机器还是要堆的

使用hash+range分库分表的思考


分库分表有垂直和水平两种分法。垂直拆分比较简单,也就是本来一个数据库,数据量大之后,从业务角度进行拆分多个库。如下图,独立的拆分出订单库和用户库水平拆分是同一个业务数据量大之后,进行水平拆分。如果订单数据达到了4000万,我们知道mysql单表存储量推荐是百万级,如果不进行处理,mysql单表数据太

MySQL默认隔离级别为什么是可重复读


1.mysql的主从复制主服务器上面的任何操作都会通过自己的 I/O tread(I/O 线程)保存在二进制日志 Binary log 里面。从服务器上面也启动一个 I/O thread,通过配置好的用户名和密码, 连接到主服务器上面请求读取二进制日志,然后把读取到的二进制日志写到本地的一个Real

数据库MVCC详解


1.什么是MVCC全称Multi-Version Concurrency Control,即多版本并发控制,主要是为了提高数据库的并发性能。以下文章都是围绕InnoDB引擎来讲,因为myIsam不支持事务。同一行数据平时发生读写请求时,会上锁阻塞住。但mvcc用更好的方式去处理读—写请求,做到在发生