MySQL中PERSIST与PERSIST_ONLY的区别及相关概念疑问
MySQL PERSIST与PERSIST_ONLY相关疑问解答
1. 什么是全局变量运行时值?
全局变量运行时值是MySQL服务当前运行状态下,全局系统变量正在生效的实时值。这个值直接作用于当前运行的MySQL实例,会即时影响服务行为——比如max_connections的运行时值,决定了此刻MySQL允许的最大并发连接数;修改这类动态变量的运行时值后,无需重启服务就能立刻看到效果。
2. PERSIST与PERSIST_ONLY的具体区别?
核心差异:对运行时值的影响
- PERSIST:执行后会同时完成两个操作:
- 修改全局变量的运行时值,让新值即时生效;
- 将变量值持久化到数据目录下的
mysqld-auto.cnf文件,确保MySQL重启后依然使用该值。
示例语句:
SET PERSIST max_connections = 1000; SET @@PERSIST.max_connections = 1000; - PERSIST_ONLY:仅完成持久化操作——把变量值写入
mysqld-auto.cnf文件,但不会修改当前的全局变量运行时值,当前运行的MySQL实例行为不受影响,只有在下次重启服务后,新值才会生效。
示例语句:SET PERSIST_ONLY back_log = 100; SET @@PERSIST_ONLY.back_log = 100;
适用场景区分
- 若需要修改的变量支持动态生效,且希望当前服务立刻应用新值、重启后也保持,用
PERSIST; - 若变量无法动态生效(必须重启才会读取新值),或不想影响当前运行的服务,仅希望重启后生效,用
PERSIST_ONLY。
内容的提问来源于stack exchange,提问作者Super Kai - Kazuya Ito
相关产品推荐
相关产品推荐

