# 16.2.1 MyISAM 启动选项

以下选项可mysqld可以用来改变行为MyISAM表。有关其他信息,请参阅第 5.1.7 节,“服务器命令选项”.

表 16.3 MyISAM 选项和变量参考

姓名 命令行 选项文件 系统变量 状态变量 变量范围 动态的
块_插入_缓冲_尺寸 是的 是的 是的 两个都 是的
同时_插入 是的 是的 是的 全球的 是的
延迟_钥匙_写 是的 是的 是的 全球的 是的
有_rtree_钥匙 是的 全球的
钥匙_缓冲_尺寸 是的 是的 是的 全球的 是的
日志-isam 是的 是的
myisam 块大小 是的 是的
米萨姆_数据_指针_尺寸 是的 是的 是的 全球的 是的
米萨姆_最大限度_种类_文件_尺寸 是的 是的 是的 全球的 是的
米萨姆_地图_尺寸 是的 是的 是的 全球的
米萨姆_恢复_选项 是的 是的 是的 全球的
米萨姆_维修_线程 是的 是的 是的 两个都 是的
米萨姆_种类_缓冲_尺寸 是的 是的 是的 两个都 是的
米萨姆_统计数据_方法 是的 是的 是的 两个都 是的
米萨姆_采用_地图 是的 是的 是的 全球的 是的
时间_桌子_尺寸 是的 是的 是的 两个都 是的

以下系统变量会影响MyISAM表。有关其他信息,请参阅第 5.1.8 节,“服务器系统变量”.

  • bulk_insert_buffer_size

    批量插入优化中使用的树缓存的大小。

    笔记

    这是一个限制每个线程

  • delay_key_write=ALL

    不要在任何写入之间刷新键缓冲区MyISAM桌子。

    笔记

    如果你这样做,你不应该访问MyISAM来自另一个程序的表(例如来自另一个 MySQL 服务器或使用迈萨姆奇克) 使用表时。这样做有索引损坏的风险。使用--外部锁定并不能消除这种风险。

  • myisam_max_sort_file_size

    MySQL 在重新创建时允许使用的临时文件的最大大小MyISAM指数(期间维修台,更改表, 要么加载数据)。如果文件大小大于此值,则使用键缓存创建索引,这会更慢。该值以字节为单位。

  • myisam_recover_options=*模式*

    设置崩溃自动恢复模式MyISAM表。

  • myisam_sort_buffer_size

    设置恢复表时使用的缓冲区大小。

    如果您启动自动恢复将被激活mysqldmyisam_recover_options系统变量集。在这种情况下,当服务器打开一个MyISAM表,它检查表是否被标记为崩溃或表的打开计数变量是否不为 0,并且您正在运行禁用外部锁定的服务器。如果其中任何一个条件为真,则会发生以下情况:

  • 服务器检查表是否有错误。

  • 如果服务器发现错误,它会尝试进行快速表修复(使用排序但不重新创建数据文件)。

  • 如果由于数据文件中的错误(例如,重复密钥错误)而导致修复失败,则服务器会再次尝试,这次重新创建数据文件。

  • 如果修复仍然失败,服务器会再次尝试使用旧的修复选项方法(逐行写入而不进行排序)。这种方法应该能够修复任何类型的错误并且对磁盘空间的要求很低。

    如果恢复无法从以前完成的语句中恢复所有行并且您没有指定力量在价值myisam_recover_options系统变量,自动修复中止并在错误日志中显示错误消息:

Error: Couldn't repair table: test.g00pages

如果您指定力量,而是写了这样的警告:

Warning: Found 344 of 354 rows when repairing ./test/g00pages

如果自动恢复值包括备份, 恢复过程创建文件的形式为*tbl_name-日期时间*.BAK.你应该有一个cron自动将这些文件从数据库目录移动到备份媒体的脚本。