• 首页
  • vue
  • TypeScript
  • JavaScript
  • scss
  • css3
  • html5
  • php
  • MySQL
  • redis
  • jQuery
  • MyISAM启动选项

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

    MyISAM选项和变量参考

    名称Cmd线选项文件系统变量状态变量可变范围动态
    bulk_insert_buffer_size
    current_insertGlobal
    delay_key_writeGlobal
    have_rtree_keysGlobal没有
    key_buffer_sizeGlobal
    对数ISAM
    密塞姆块大小
    myisam_data_pointer_sizeGlobal
    myisam_max_sort_file_sizeGlobal
    myisam_mmap_sizeGlobal没有
    myisam_recover_optionsGlobal没有
    myisam_repair_threads
    myisam_sort_buffer_size
    myisam_stats_method
    myisam_use_mmapGlobal
    tmp_table_size

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

    • bulk_insert_buffer_size

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

      注意

      这是每个线程的限制!

    • delay_key_write=ALL

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

      注意

      如果这样做,则在使用MyISAM表时,不应从另一个程序(例如,从另一个MySQL服务器或使用myisamchk)访问表。这样做可能会导致索引损坏。使用--external-locking并不能消除这种风险。

    • myisam_max_sort_file_size

      在重新创建MyISAM索引时(,或期间)REPAIR TABLE,允许MySQL使用的临时文件的最大大小。如果文件大小大于此值,那么将使用键高速缓存来创建索引,这会更慢。该值以字节为单位。ALTER TABLELOAD DATA

    • myisam_recover_options=mode

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

    • myisam_sort_buffer_size

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

    如果使用系统变量集启动mysqld,则将激活自动恢复myisam_recover_options。在这种情况下,服务器打开MyISAM表时,将检查表是否标记为已崩溃或表的打开计数变量是否不为0,并且您正在禁用外部锁定的情况下运行服务器。如果这些条件之一成立,则会发生以下情况:

    • 服务器检查表中是否有错误。
    • 如果服务器发现错误,它将尝试进行快速的表修复(使用排序并且不重新创建数据文件)。
    • 如果由于数据文件中的错误(例如,重复密钥错误)而导致修复失败,则服务器将再次尝试,这一次将重新创建数据文件。
    • 如果修复仍然失败,则服务器将使用旧的修复选项方法再次尝试(逐行写入而不进行排序)。此方法应该能够修复任何类型的错误,并且磁盘空间要求低。

    如果恢复无法从先前完成的语句中恢复所有行,并且您未FORCEmyisam_recover_options系统变量的值中指定,则自动修复会中止并在错误日志中显示一条错误消息:

    Error: Couldn't repair table: test.g00pages
    

    如果指定FORCE,则会写出这样的警告:

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

    如果自动恢复值包括在内BACKUP,则恢复过程将创建具有以下格式名称的文件tbl_name-datetime.BAK。您应该具有一个cron脚本,该脚本会自动将这些文件从数据库目录移动到备份介质。