相关文档 下载本手册
PDF (US Ltr) - 39.9Mb
PDF (A4) - 40.0Mb
手册页 (TGZ) - 258.5Kb
手册页 (Zip) - 365.5Kb
Info (Gzip) - 4.0Mb
Info (Zip) - 4.0Mb


MySQL 8.4 参考手册  /  ...  /  MyISAM 启动选项

18.2.1 MyISAM 启动选项

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

表 18.3 MyISAM 选项和变量参考

名称 命令行 选项文件 系统变量 状态变量 变量范围 动态
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

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

    注意

    这是 每个线程 的限制!

  • delay_key_write=ALL

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

    注意

    如果您执行此操作,则不应从另一个程序(例如,从另一个 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 脚本来自动将这些文件从数据库目录移动到备份介质。