以下选项可用于更改 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 节,“服务器系统变量”。
-
批量插入优化中使用的树缓存的大小。
Note这是一個 每个线程 的限制!
-
不要在写入之间刷新键缓冲区,以便对任何
MyISAM
表进行写入。Note如果您这样做,那么您不应该在其他程序(例如其他 MySQL 服务器或使用 myisamchk)中访问
MyISAM
表时表处于使用中。这样做可能会导致索引损坏。使用--external-locking
不会消除这种风险。 -
MySQL 在重新创建
MyISAM
索引时(在REPAIR TABLE
、ALTER TABLE
或LOAD DATA
中)允许使用的临时文件的最大大小。如果文件大小将超过这个值,那么索引将使用键缓存创建,这将更慢。该值以字节为单位。 -
设置自动恢复崩溃的
MyISAM
表的模式。 -
设置恢复表时使用的缓冲区的大小。
如果您使用 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
,恢复过程将创建名称以
形式的文件。您应该拥有一个 cron 脚本,该脚本自动将这些文件从数据库目录移到备份媒体上。tbl_name-datetime
.BAK