Memory VS MyIsam tmpfs?



有许多列是TEXT类型的表。有些表很大,服务是High Load。

当一个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

一般来说,最好忽略你提出的所有问题。

  • 如果SELECT 包含 TEXT列,它必须使用MyISAM,而不是MEMORY。也就是说,如果您不触及任何TEXT, BLOB或"大"VAR*列,它许多不需要使用MyISAM。
  • 让我们看看查询;也许我们可以避免TMP表!
  • 基于各种缓存问题,MyISAM tmp表将大部分(全部?)留在RAM中。对于tmp表,MEMORY几乎总是比MyISAM快。
  • 如果你使用ramdisk,并且tmp表太大,查询会崩溃。
  • 如果你使用ramdisk,你正在从其他东西(特别是InnoDB的buffer_pool)窃取RAM,从而减慢其他一切!
  • 如果您需要超过255(或者是512),从TEXT更改为VARCHAR将不起作用?我没有确切的截止时间。)
  • 你提到的设置都与这个用例无关。

相关内容

  • 没有找到相关文章

最新更新