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 节,“服务器系统变量”。
批量插入优化中使用的树缓存的大小。
笔记这是每个线程的限制!
不要在任何
MyISAM
表的写入之间刷新键缓冲区。笔记如果这样做, 当表正在使用时,您不应该
MyISAM
从另一个程序(例如从另一个 MySQL 服务器或使用 myisamchk )访问表。这样做有索引损坏的风险。使用--external-locking
并不能消除这种风险。MySQL 在重新创建
MyISAM
索引时(在REPAIR TABLE
、ALTER TABLE
或 期间LOAD DATA
)被允许使用的临时文件的最大大小。如果文件大小大于此值,则使用键缓存创建索引,速度较慢。该值以字节为单位给出。设置崩溃
MyISAM
表的自动恢复模式。设置恢复表时使用的缓冲区大小。
如果您
使用
系统变量集启动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
,恢复过程将创建名称为
. 您应该有一个cron脚本,可以自动将这些文件从数据库目录移动到备份媒体。
tbl_name-datetime
.BAK