Related Documentation Download this Manual
PDF (US Ltr) - 40.8Mb
PDF (A4) - 40.9Mb
Man Pages (TGZ) - 294.0Kb
Man Pages (Zip) - 409.0Kb
Info (Gzip) - 4.0Mb
Info (Zip) - 4.0Mb
Excerpts from this Manual

18.2.1 MyISAM 启动选项

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

表 18.3 MyISAM 选项和变量参考

Name Cmd-Line Option File System Var Status Var Var Scope Dynamic
bulk_insert_buffer_size 两者
concurrent_insert 全局
delay_key_write 全局
have_rtree_keys 全局
key_buffer_size 全局
log-isam
myisam-block-size
myisam_data_pointer_size 全局
myisam_max_sort_file_size 全局
myisam_mmap_size 全局
myisam_recover_options 全局
myisam_sort_buffer_size 两者
myisam_stats_method 两者
myisam_use_mmap 全局
tmp_table_size 两者

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

  • bulk_insert_buffer_size

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

    Note

    这是一個 每个线程 的限制!

  • delay_key_write=ALL

    不要在写入之间刷新键缓冲区,以便对任何 MyISAM 表进行写入。

    Note

    如果您这样做,那么您不应该在其他程序(例如其他 MySQL 服务器或使用 myisamchk)中访问 MyISAM 表时表处于使用中。这样做可能会导致索引损坏。使用 --external-locking 不会消除这种风险。

  • myisam_max_sort_file_size

    MySQL 在重新创建 MyISAM 索引时(在 REPAIR TABLEALTER TABLELOAD DATA 中)允许使用的临时文件的最大大小。如果文件大小将超过这个值,那么索引将使用键缓存创建,这将更慢。该值以字节为单位。

  • myisam_recover_options=mode

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

  • myisam_sort_buffer_size

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

如果您使用 myisam_recover_options 系统变量启动 mysqld,那么当服务器打开 MyISAM 表时,它将检查表是否崩溃或打开计数变量是否不为 0,并且您正在禁用外部锁定的情况下运行服务器。在这种情况下,以下情况将发生:

  • 服务器检查表中的错误。

  • 如果服务器发现错误,它将尝试快速修复表(带排序和不重新创建数据文件)。

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

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

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

Error: Couldn't repair table: test.g00pages

如果您指定了 FORCE,将写入类似的警告:

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

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