将DB移动到另一个驱动器符号链接的性能如何?

我们正在考虑将一个数据库(总共有4个)与InnoDB表一起移动到Ubuntu 14.04 VPS中的一个单独的分区。 这个数据库读/写密集(每秒500次写入,大约1000次读取)。

主要的考虑是其他驱动器有更多的空间。 我们使用MySQL指南来实现这个使用符号链接

有没有使用符号链接的任何性能命中?

不,符号链接的性能几乎不存在。 这里有一些strace来显示它。

jaba@jaba-ubuntu:~$ echo foo >test jaba@jaba-ubuntu:~$ ln -s test testlink jaba@jaba-ubuntu:~$ ls -lah test testlink -rw-rw-r-- 1 jaba jaba 4 heinä 7 14:39 test lrwxrwxrwx 1 jaba jaba 4 heinä 7 14:39 testlink -> test jaba@jaba-ubuntu:~$ strace -fFtT cat testlink <some strace output omitted> 14:39:35 open("testlink", O_RDONLY|O_LARGEFILE) = 3 <0.000042> 14:39:35 fstat64(3, {st_mode=S_IFREG|0664, st_size=4, ...}) = 0 <0.000032> 14:39:35 fadvise64_64(3, 0, 0, POSIX_FADV_SEQUENTIAL) = 0 <0.000033> 14:39:35 read(3, "foo\n", 65536) = 4 <0.000056> 14:39:35 write(1, "foo\n", 4foo ) = 4 <0.000048> 14:39:35 read(3, "", 65536) = 0 <0.000033> 14:39:35 close(3) = 0 <0.000036> 14:39:35 close(1) = 0 <0.000032> 14:39:35 close(2) = 0 <0.000031> 

如果你到了符号链接可能导致严重的瓶颈,那么你的I / O是非常重的。 像“世界上没有任何存储系统可以承担这种工作量”一样沉重。

在性能方面,使用符号链接本身并没有真正的影响。 性能只会根据符号链接指向的磁盘而提高或降低。 如果将整个datadir移动到符号链接的目标,这是真实的。

如果你想提高性能,你可能需要一个混合的方法。

根据Facebook的MySQL工程师的博客 ,你应该拆分MySQL文件,以便一个磁盘拥有所有接收顺序写入的MySQL文件,另一个磁盘具有接收随机写入的MySQL文件。

之前我已经讨论过这种方法用于MySQL和PostgreSQL

  • Aug 14, 2013 : https : //dba.stackexchange.com/questions/48028/how-do-i-determine-how-much-data-is-being- Aug 14, 2013 / 48139 #48139
  • Jun 25, 2013 : https : //dba.stackexchange.com/questions/45224/postgres-write-performance-on-intel-s3700-ssd/45228#45228
  • Jun 18, 2013 : https : //dba.stackexchange.com/questions/44749/how-big-can-innodb-doublewrite-file-grow/44755#44755

恕我直言,我会保持所有InnoDB数据库的符号链接数量最小。 使用它们链接到文件夹或非常大的日志表。