यह इस प्रश्न से संबंधित है । यह InnoDB तालिकाओं के लिए बेहतर प्रदर्शन प्राप्त करने में मदद करता है।
MySQL मैनुअल के अनुसार , innodb_flush_log_at_trx_commit
एक वैश्विक गतिशील चर है। इस प्रकार, मैं इसे SET GLOBAL कमांड का उपयोग करके बदल सकता हूं और यह काम करने लगता है।
mysql> SET GLOBAL innodb_flush_log_at_trx_commit=2;
Query OK, 0 rows affected
mysql> SHOW VARIABLES LIKE 'innodb_flush_log_at_trx_commit';
+--------------------------------+-------+
| Variable_name | Value |
+--------------------------------+-------+
| innodb_flush_log_at_trx_commit | 2 |
+--------------------------------+-------+
1 row in set
लेकिन, इसने वास्तविक MySQL सेटिंग को परिवर्तित नहीं किया। जब मैंने my.cnf को अपडेट किया और MySQL सर्वर को पुनरारंभ किया, तो यह काम किया। इसलिए, मैं रन समय में वैश्विक चर को बदल नहीं सकता हूं?
मैं डिफ़ॉल्ट मान को पसंद करता हूं innodb_flush_log_at_trx_commit=1
, लेकिन इससे पहले कि मैं तेजी से प्राप्त करने के लिए एक बड़े डेटाबेस के लिए एक पुनर्स्थापना प्रक्रिया चलाता हूं, मुझे इसे 2 में बदलना होगा। लेकिन जब प्रक्रिया पूरी हो जाती है, तो मैं मान को वापस 1 में बदलना चाहता हूं। क्या रन टाइम में ऐसा करना संभव है?
मेरे पास मेरे साझा होस्टिंग सर्वर पर my.cnf की पहुंच नहीं है ।
SET GLOBAL max_connections = 1000;
जब मैं अधिकतम मान बदलने के लिए दौड़ता हूं और जब मैंSHOW VARIABLES LIKE 'max_connections';
पुराने मूल्य को देखने के लिए दौड़ता हूं, तो जब तक मैं लॉग इन करता हूं और वापस जाता हूं। इस दृष्टिकोण के लिए +1 और वापस ले लिया जाता है, जो अक्सर दिया जाता है।