内存VS MyIsam tmpfs?

时间:2016-10-07 06:59:23

标签: mysql memory myisam tmpfs

有许多表TEXT类型的表。有些表很大,服务是高负载。 InnoDB中的所有表格。

如果SQL查询创建了tmp表(如果它具有TEXT类型的字段),则会在类型为MyISAM的磁盘上创建该表。为了避免磁盘I / O操作,MySQL临时目录(tmpdir)被挂载在内存中(tmpfs)。

1)什么会更快MyISAM tmpfs或内存?有很大的不同吗?

2)如果MyISAM用于临时表我是否需要配置缓冲区,这只是MyISAM表所必需的:read_buffer_size read_rnd_buffer_size?这些MyISAM配置会对性能产生影响吗? (Myisam_sort_buffe_size,key_buffer_size)

我想将TEXT更改为VARCHAR。

1 个答案:

答案 0 :(得分:0)

通常,最好忽略您提出的所有问题。

  • 如果SELECT 包含 TEXT列,则必须使用MyISAM,而不是MEMORY。也就是说,如果您未触及任何TEXTBLOB或“大型”VAR*列,则许多不需要使用MyISAM。
  • 让我们看看查询;也许我们可以避开tmp表!
  • 如果可行的话,根据各种缓存问题,MyISAM tmp表将主要(完全?)保留在RAM中。
  • 对于tmp表,MEMORY几乎总是比MyISAM快。
  • 如果使用ramdisk且tmp表太大,查询将崩溃。
  • 如果您使用ramdisk,则会从其他东西(特别是InnoDB的buffer_pool)窃取RAM,从而减慢其他所有内容!
  • 如果您需要超过255(或者是512?我没有确切的截止值),从TEXT更改为VARCHAR将无效。
  • 您提及的所有设置都与用例无关。