使用tmpfs存放MySQL的临时文件的问题一则
最近測試使用tmpfs文件系統作為tmpdir選項存放臨時文件的位置,具體步驟網上有很多,但是遇到了一個小bug。
MySQL的相關參數:
default-storage-engine = INNODB
innodb_flush_method=O_DIRECT
tmpdir = /tmp/mysqltmp
/tmp/mysqltmp目錄為tmpfs。
使用以下語句創建Innodb類型的臨時表:
SQL> create temporary table tmpdemo(a int) engine=innodb;
查看error日志有如下警告:
InnoDB: Failed to set O_DIRECT on file /tmp/mysqltmp/#sqla61_62b9_0.ibd: CREATE: Invalid argument, continuing anyway
InnoDB: O_DIRECT is known to result in 'Invalid argument' on Linux on tmpfs, see MySQL Bug#26662
雖然報錯,但通過上面的信息可以看出并未影響正常的數據操作,實際情況也是如此,那么如何避免這種error呢?
1.創建memory或myisam的臨時表代替innodb;
2.修改innodb_flush_method為非O_DIRECT,如O_DSYNC、fdatasync;
參考:
http://bugs.mysql.com/bug.php?id=26662
http://bugs.mysql.com/bug.php?id=45671
轉載于:https://blog.51cto.com/cau99/351120
總結
以上是生活随笔為你收集整理的使用tmpfs存放MySQL的临时文件的问题一则的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: ADHD-注意力缺陷多动症
- 下一篇: [C++]MySQL数据库操作实例