31

innodb_flush_method 与 Linux File I/O

innodb_flush_log_at_trx_commit参数确定日志文件何时write、flush。innodb_flush_method则确定日志及数据文件如何write、flush。在Linux下,innodb_flush_method可以取如下值:fdatasync, O_DSYNC, O_DIRECT,那这三个值分别是如何影响文件写入的?首先我们需要先来了解Linux的文件I/O是如何工作的。

继续阅读全文

18

随机主键对InnoDB插入性能的影响

孔子说得好,“学而不思则罔,思而不学则殆”。看书看多了不去想不去做对比,很快脑子就会一片混乱。这篇blog稍微介绍下随机主键对InnoDB插入性能的影响。
InnoDB引擎的行结构相当复杂(compact、redundant、Barracuda)。为了弄明白这一个细节,我翻了很多遍官方手册。后来又对比着看了很多本书,发现他们自相矛盾,无奈之下,只能从简单的开始测起。

继续阅读全文

13

MySQL 关于毫秒的处理

很多从ORACLE 或者 SQL SERVER 移植到 MySQL 的朋友都遇到一个相同的问题,就是关于毫秒的存储与显示。 由于MySQL 的只提供了DATETIME, TIMESTAMP, TIME, DATE, YEAR这几种时间类型,而且DATETIME 以及 TIMESTAMP 的最小单位是秒,没有存储毫秒级别的函数。 不过MySQL 却能识别时间中的毫秒部分。而且我们有多种方式可以获得毫秒的部分,比如函数:microsecond 等。

继续阅读全文