张远 MySQL/MyRocks
--- title: MySQL · myrocks · collation 限制 author: 张远 --- # 背景 MyRocks中的数据是按索引列以memcmp方式进行排序的。对于一些数字类型,需要进行转化才能直接通过memcmp进行比较, 例如有符号数在计算机中是用补码表示的,那么如果负数和正数直接按字节比较,结果负数会比正数大,实际存储时会将符号会反转存储,读取时再转
--- title: MySQL · RocksDB · Write Prepared Policy author: 张远 --- # 背景 早期RocksDB TransactionDB将事务的更新操作都缓存在WriteBatch中,事务提交时才写WAL和memtable。RocksDB支持二阶段提交(2PC)后,在prepare阶段写WAL, WriteBatch写memt
--- title: MySQL · myrocks · clustered index特性 author: 张远 --- # Cluster index介绍 最近在RDS MyRocks中,我们引入了一个重要功能,二级聚集索引(secondary clustering index). 我们知道innodb和rocksdb引擎的主键就是clustered index。二级聚集索引
# 概述 MyRocks TTL(Time To Live) 特性允许用户指定表数据的自动过期时间,表数据根据指定的时间在compact过程中进行清理。 MyRocks TTL 简单用法如下, 在comment中通过ttl_duration指定过期时间,ttl_col指定过期时间列 ``` CREATE TABLE t1 ( a bigint(20) NOT NUL
# 概述 MyRocks中RocksDB作为基于快照的事务引擎,其在事务支持上有别于InnoDB,有其自身的特点。在早期的月报[[myrocks之事务处理]](http://mysql.taobao.org/monthly/2016/11/02/) 中,我们对锁的实现有过简单的分析,本文会以一些例子来介绍MyRocks是如果来加锁解锁的。 # 锁类型 MyRocks早期只支持排他锁,
--- title: MySQL · MyRocks · MyRocks参数介绍 author: 张远 --- # 以下参数是db级别的,全局有效 参数 说明 备注 rocksdb_block_cache 缓存uncompressed bloc
--- title: MySQL · myrocks · myrocks相关tools介绍 author: 张远 --- # 概述 MyRocks提供了丰富的tools,如sst_dump, mysql_ldb等,这些工具对我们的运维和分析问题非常有用。 sst_dump 可以导出sst中的数据和属性信息。 ``` sst_dump --help sst_dump
# 概述 本文简要介绍了一些存储引擎存储结构,包括InnoDB, TokuDB, RocksDB, TiDB, CockroachDB, 供大家对比分析 # InnoDB InnoDB 底层存储结构为B+树,结构如下 ![image.
--- title: MySQL · mysql · myrocks之Bloom filter author: 张远 --- # Bloom filter 简介 Bloom filter用于判断一个元素是不是在一个集合里,当一个元素被加入集合时,通过k个散列函数将这个元素映射成一个位数组中的k个点,把它们置为1。检索时如果这些点有任何一个为0,则被检元素一定不在;如果都是1,则
--- title: MySQL · mysql · MySQL replication partial transaction author: 张远 --- # replication 概述 目前MySQL支持的replication方式多种多样 1. 普通的master-slave 异步replication 2. 半同步的semi-sync replication
--- title: MySQL · myrocks · myrocks写入分析 author: 张远 --- # 写入流程 myrocks的写入流程可以简单的分为以下几步来完成 1. 将解析后的记录(kTypeValue/kTypeDeletion)写入到WriteBatch中 2. 将WAL日志写入log文件 3. 将WriteBatch中的内容写到memtabl
--- title: MySQL · myrocks · MyRocks之memtable切换与刷盘 author: 张远 --- # 概述 MyRocks的memtable默认是skiplist,其大小和个数分别由参数write_buffer_size和max_write_buffer_number控制。
--- title: MySQL · 特性分析 · MyRocks简介 author: 济天 --- RocksDB是facebook基于LevelDB实现的,目前为facebook内部大量业务提供服务。经过facebook大量工作,将RocksDB作为MySQL的一个存储引擎移植到MySQL,称之为MyRocks。 经过两年的发展,MyRocks已经比较成熟(RC阶段),现已进入了
# Fast data load Load data相比普通insert效率更高,Load data批量插入数据有效减少了解析SQL的开销。MyRocks 同其他MySQL 引擎一样也支持Load data语法,同时MyRocks对data load也做了特殊优化。RocksDB引擎有一个规律是,**数据最终会存储在最底层SST文件中**,MyRocks通过参数rocksdb_bulk_
Common table expression简称CTE,由[SQL:1999标准引入。
mysql prepare 原理
--- title: MySQL · myrocks · myrocks监控信息 author: 张远 --- rocksdb本身提供了丰富的监控信息,myrocks通过information_schema下的表和show命令等将这些信息展示出来,下面主要以示例的形式来简单介绍下 先创建测试表 ``` CREATE TABLE t1 (a INT, b CHAR(8), pk
--- title: MySQL · myrocks · myrocks之备份恢复 author: 张远 --- myrocks支持逻辑备份和物理备份,逻辑备份仍然采用mysqldump,物理备份采用自己开发的myrocks_hotbackup工具,传统的物理备份工具Xtrabackup不支持rocksdb。
# 现象 实例出现too many connections ``` my 3093 Entry Port ==== 3093 ERROR 1040 (08004): Too many connections ``` gdb修改max_connections后查看processlist,
--- title: MySQL · mysql · mysql 查询结果异常分析 author: 张远 --- # 现象 查询条件类型变化后,查询出了不正确的结果。 ``` create table t1(id int primary key, a varchar(50) DEFAULT NULL, key idx_a(a)) engine=innodb; sho
--- title: MySQL · myrocks · myrocks index condition pushdown author: 张远 --- # index condition pushdown Index condition pushdown[(ICP)](http://dev.mysql.com/doc/refman/5.6/en/index-condition-
myrocks crash safe 特性
--- title: MySQL ・ myrocks ・ myrocks统计信息 author: 张远 --- # 概述 mysql查询优化主要是在代价统计分析的基础上进行的。合理的代价模型和准确的代价统计信息决定了查询优化的优劣。myrocks基于mysql5.6, 目前的代价模型依赖的主要因素是IO和CPU,mysql5.7及以上的版本代价模型做了较多改进,具体可以参考[这里](
--- title: MySQL · myrocks · myrocks之事务处理 author: 张远 --- # 前言 mysql目前支持的事务引擎有innodb,tokudb. rocksdb加入mysql阵营后,mysql支持的事务引擎增长至3个。 myrocks目前支持的事
--- title: MySQL · myrocks · myrocks记录格式分析 author: 张远 --- # 概况 rocksdb作为KV存储引擎,那么myrocks记录最终会以kv的形式存储在rocksdb中。MySQL中的表一般由若干索引组成, 在innodb存储引擎中,每个索引对应一颗B树,而在rocksdb存储引擎中,索引对应于rocksdb中一段连续范围的数据。
# rocksdb for rds 近期,我们将myrocks集成到了我们的 rds mysql5.6分支中,rds 5616又多了一个存储引擎rocksdb. 本文将对rds mysql5.6的rocksdb与innodb和tokudb做下对比测试 myrocks介绍参考[上篇文
--- title: MySQL · myrocks · data dictionary 分析 author: 济天 --- # data dictionary rocksdb作为mysql的一个新的存储引擎,在存储引擎层,会维护自动的元数据信息。在innodb存储引擎中,我们通过information_schema下的INNODB_SYS_DATAFILES,INNODB_SY
--- title: MySQL · 特性分析 · MyRocks简介 author: 济天 --- RocksDB是facebook基于LevelDB实现的,目前为facebook内部大量业务提供服务。经过facebook大量工作,将RocksDB作为MySQL的一个存储引擎移植到MySQL,称之为MyRocks。 经过两年的发展,MyRocks已经比较成熟(RC阶段),现已进入了
# innodb行锁简介 1. 行锁类型 ``` LOCK_S:共享锁 LOCK_X: 排他锁 ``` 2. GAP类型 ``` LOCK_GAP:只锁间隙 LOCK_REC_NO_GAP:只锁记录 LOCK_ORDINARY: 锁记录和记录之前的间隙 LOCK_INSERT_INTENTION: 插入意向锁,用于ins
# 代价模型 mysql 5.7代价计算相对之前的版本有较大的改进。例如 * 代价模型参数可以动态配置,可以适应不同的硬件 * 区分考虑数据在内存和在磁盘中的代价 * 代价精度提升为浮点型 * jion计算时不仅要考虑condition,还要考虑condition上的filter,具体参见参数condition_fanout_filter 5.7 在代价类型上分为io,cpu和me
## 背景 innodb buffer pool作为innodb最重要的缓存,其缓存命中率的高低会直接影响数据库的性能。因此在数据库发生变更,比如重启、主备切换实例迁移等等,innodb buffer poll 需要一段时间预热,期间数据库的性能会受到明显影响。 另外mysql 5.7以前innodb buffer pool缓存大小修改不是动态的,重启才能生效。因此innodb buff