skip-external-locking skip-locking Bertha 。 2022-12-23 07:04 116阅读 0赞 MySQL的配置文件my.cnf中默认存在一行skip-external-locking的参数,即“跳过外部锁定”。根据MySQL开发网站的官方解释,External-locking用于多进程条件下为MyISAM数据表进行锁定。 如果你有多台服务器使用同一个数据库目录(不建议),那么每台服务器都必须开启external locking; 调整MySQL运行参数,修改/etc/my.cnf文件调整mysql运行参数重启MySQL后生效,在MySQL4版本以后,一部分内部变量可以在MySQL运行时设置,不过重启MySQL就失效了。 当外部锁定(external-locking)起作用时,每个进程若要访问数据表,则必须等待之前的进程完成操作并解除锁定。由于服务器访问数据表时经常需要等待解锁,因此在单服务器环境下external locking会让MySQL性能下降。所以在很多Linux发行版的源中,MySQL配置文件中默认使用了skip-external-locking来避免external locking。 当使用了skip-external-locking后,为了使用MyISAMChk检查数据库或者修复、优化表,你必须保证在此过程中MySQL服务器没有使用需要操作的表。如果没有停止服务器,也至少需要先运行 <table> <tbody> <tr> <td><code>1</code></td> <td><code>mysqladmin flush-tables</code></td> </tr> </tbody> </table> 命令,否则数据表可能出现异常。 如果是多服务器环境,希望打开external locking特征,则注释掉这一行即可 <table> <tbody> <tr> <td><code>1</code></td> <td><code># skip-external-locking</code></td> </tr> </tbody> </table> 如果是单服务器环境,则将其禁用即可,使用如下语句 <table> <tbody> <tr> <td><code>1</code></td> <td><code>skip-external-locking</code></td> </tr> </tbody> </table> 在老版本的MySQL中,此参数的写法为: <table> <tbody> <tr> <td><code>1</code></td> <td><code>skip-locking</code></td> </tr> </tbody> </table> 如果在新版本MySQL配置中依然使用此写法,则可能出现: \[Warning\] ‘–skip-locking’ is deprecated and will be removed in a future release. Please use ‘–skip-external-locking’ instead.
还没有评论,来说两句吧...