07

MariaDB 特性介绍-动态虚拟列

MariaDB为NoSQL的扩展提供的另外一个特性 就是:动态列。对表的每一行都可以有一个“虚拟列”,该列可以用于保存一个对象的不同属性,每个属性在各行之间可以完全不同,“虚拟列”的个数和内容完全有应用程序来控制和解释。

继续阅读全文

05

MySQL源码:Range和Ref优化的成本评估

MySQL的一个执行计划,有两部分成本,CPU成本(CPU COST)和IO成本(IO COST)。CPU COST是指查询出纪录后,需要做过滤等处理的时候的CPU消耗,IO COST是指,从存储引擎读取数据时需要做的IO消耗。
总成本 = CPU COST + IO COST
补充说明:(1) IO成本计算不考虑缓存的影响。因为在优化器本身是无法预知需要的数据到底在内存中还是磁盘上。

继续阅读全文

03

MySQL slave error 1677

今天一台slave突然报错,最终定位是有两个系统,有一个系统写入不规范引起。这边不详细介绍这个问题,记录一下。slave_type_conversions:在slave上进行字段类型转化的,因为主备之间可能在某些情况下,有相同的表名,但字段多少、字段类型、字段顺序不一样,可能导致1677错误,这时需要设置相应参数来进行处理。

继续阅读全文

28

量化InnoDB group commit的效果

InnoDB的redo log的group commit历史比较悠久了(有别于binlog的group commit)。如果设置为1,每次事务提交都至少需要写一次redolog。这对IOPS冲击严重,尤其是在HDD上,直接成为性能瓶颈。Group commit的基本想法是将多个并发线程对redo的fsync操作合并成1个。

继续阅读全文