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节,“服务器系统变量”。
-
批量插入优化中使用的树缓存大小。
Note这是一个每个线程的限制!
-
不在写入任何
MyISAM
表时刷新键缓存。Note如果您这样做,您不能从另一个程序(例如,从另一个MySQL服务器或使用myisamchk)访问
MyISAM
表,当这些表正在使用时。这可能会导致索引损坏。使用--external-locking
不能消除这个风险。 -
MySQL 在重建
MyISAM
索引时(在REPAIR TABLE
、ALTER TABLE
或LOAD DATA
中)允许使用的临时文件最大大小。如果文件大小将超过这个值,索引将使用键缓存创建,这是更慢的。该值以字节为单位。 -
设置自动恢复崩溃的
MyISAM
表的模式。 -
设置恢复表时使用的缓冲区大小。
自动恢复在您启动mysqld时激活,如果设置了myisam_recover_options
系统变量。在这种情况下,当服务器打开一个 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