Answers:
您要尽可能避免创建临时表:防止复制到临时表(sql)
它们在MySQL复制中无法正常工作:如何为MySQL临时表更新二进制日志?
由于临时表是数据库世界中不可或缺的事实,因此您可能必须进行一些非常规的更改以适应其存在。
通常,mysqld习惯于将tmp表放置在配置了tmpdir的/tmp
任何地方。通常是在一些可疑的磁盘上。
一个有趣的替代方法是设置RAM磁盘并重新配置tmpdir以使用它
步骤01:为RAM磁盘创建挂载点
mkdir /var/tmpfs
步骤02:将RAM磁盘添加到/ etc / fstab(16GB)
echo "none /var/tmpfs tmpfs defaults,size=16g 1 2" >> /etc/fstab
步骤03:将此行添加到/etc/my.cnf
[mysqld]
tmpdir=/var/tmpfs
步骤04:启用RAM磁盘
您可以执行以下操作之一:
mount -t tmpfs -o size=16g none /var/tmpfs
在执行此操作之前,请确保您有足够的RAM
试试看 !!!
“许多mysql临时表”-潜在的问题:
除非您一次真正拥有数百个临时表,否则我不会担心“很多”。
一次正在运行多少个线程(SHOW PROCESSLIST;忽略“ Sleep”)?即使是繁忙的系统,也很少会一次拥有10个以上的系统。
对于隐式临时表,让我们看一下导致它们的SELECT。可以重新设计查询以避免使用临时表。
我不喜欢使用ram磁盘-它使RAM脱离了其他缓存的可能性,并冒着达到硬限制(磁盘大小)的风险。