MySQL - my.cnf中的跳过锁定有什么作用?

时间:2009-06-03 08:52:30

标签: mysql

我在RHEL5上使用MySQL 5.0.67并将我的配置基于my-huge.cnf。

我在MySQL手册中找不到配置文件中出现的'skip-locking'行。

是否应将其替换为'skip_external_locking',或者我应该完全删除该行,因为现在这是默认行。

MySQL Manual for skip-external-locking

感谢。

2 个答案:

答案 0 :(得分:26)

请参阅http://dev.mysql.com/doc/refman/5.0/en/external-locking.html

报价:

  

如果您运行多个使用相同数据库目录的服务器(不推荐),则每个服务器都必须启用外部锁定。

这实际上只与访问相同数据的多个进程所带来的危险有关。在许多DBMS情况下,您希望在执行操作之前锁定表/行,然后解锁。这是为了防止可能的数据损坏。

修改:见http://dev.mysql.com/doc/refman/4.1/en/news-4-0-3.html 报价

  

重命名--skip-locking to --skip-external-locking。

答案 1 :(得分:0)

对于未遵循@Jonathan Fingland提供的链接的任何人的附加说明:
8.7.4. External Locking

此选项仅适用于MyISAM表。

正如Richard指出的那样,默认情况下禁用外部锁定。如果使用myisamchk进行写入操作,或者使用myisampack打包表,则需要启用外部锁定。

来自文档:

  

如果使用myisamchk在MyISAM上执行表维护操作   表,您必须确保服务器没有运行,或者那样   服务器已启用外部锁定,以便锁定表文件   必要时与myisamchk协调以访问表格。   使用myisampack打包MyISAM表也是如此。

     

如果您使用myisamchk进行修复等操作   优化表,或者如果使用myisampack打包表,则必须   始终确保mysqld服务器不使用该表。如果你   不要停止mysqld,你至少应该做一个mysqladmin flush-tables   在你运行myisamchk之前。如果你的表可能会被破坏   server和myisamchk同时访问表。