16.2.1 MyISAM 启动选项

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

表 16.3 MyISAM 选项和变量引用

姓名 命令行 选项文件 系统变量 状态变量 可变范围 动态的
bulk_insert_buffer_size 是的 是的 是的 两个都 是的
并发插入 是的 是的 是的 全球的 是的
延迟_密钥_写入 是的 是的 是的 全球的 是的
有_rtree_keys 是的 全球的
key_buffer_size 是的 是的 是的 全球的 是的
log-isam 是的 是的
myisam 块大小 是的 是的
myisam_data_pointer_size 是的 是的 是的 全球的 是的
myisam_max_sort_file_size 是的 是的 是的 全球的 是的
myisam_mmap_size 是的 是的 是的 全球的
myisam_recover_options 是的 是的 是的 全球的
myisam_repair_threads 是的 是的 是的 两个都 是的
myisam_sort_buffer_size 是的 是的 是的 两个都 是的
myisam_stats_method 是的 是的 是的 两个都 是的
myisam_use_mmap 是的 是的 是的 全球的 是的
tmp_table_size 是的 是的 是的 两个都 是的

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

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

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

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

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

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

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

Error: Couldn't repair table: test.g00pages

如果您指定FORCE,则会写入如下警告:

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

如果自动恢复值包括 BACKUP,恢复过程将创建名称为 tbl_name-datetime.BAK. 您应该有一个cron脚本,可以自动将这些文件从数据库目录移动到备份媒体。