mysql सर्वर में धीमी क्वेरी लॉगिंग


2

मैंने विंडोज़ 2000 सर्वर पर MySQL समुदाय संस्करण 5.1.41 स्थापित किया है। My.ini फ़ाइल में मैंने धीमी क्वेरी लॉगिंग को सक्षम किया है और आउटपुट को एक टेबल पर रीडायरेक्ट किया है। मैंने long_query_time को 10 सेकंड में सेट किया है। फिर कुछ प्रश्नों को चलाने के बाद मैंने धीमी क्वेरी लॉग टेबल की जाँच की और पाया कि जिन प्रश्नों को निष्पादित किया गया था, वे लॉग इन हो चुके हैं और डेटा-फोल्डर में डेटाबेस-स्लो.लॉग नामक फाइल भी बनाई गई है। क्या कोई मुझे बता सकता है कि मैं कहां गलत हूं। मैं इनबिल्ट इनसोडब का उपयोग कर रहा हूं और इंसोडब प्लगइन को सक्रिय नहीं कर रहा हूं।

धन्यवाद


यह उपयोगी हो सकता है यदि आप अपने पेस्ट के my.cnfरूप में अच्छी तरह से
lynxman

निम्नलिखित my.cnf फ़ाइल का प्रासंगिक हिस्सा है long_query_time = 10 log_output = TABLE slow_query_log = 1 log_queries_not_using_index = 1 innodb_file_per_table = 1
विनायक महादेवन

जवाबों:


0

शुरुआत के लिए, मैंने इन पंक्तियों को /etc/my.cnf में रखा

[mysqld]
log-output=TABLE
slow-query-log
slow-query-log-file=slow-queries.log

जब आप log_output को TABLE होने के साथ धीमी लॉग का उपयोग करते हैं, तो तालिका IS / var / lib / mysql में नहीं बनाई गई है। तालिका mysql फ़ोल्डर, / var / lib / mysql / mysql में बनाई गई है। डिफ़ॉल्ट टेबल-आधारित धीमी लॉग के लिए भंडारण इंजन CSV है। आप निम्न कार्य करके इसकी जाँच कर सकते हैं:

use mysql
show tables;

आपको टेबल को धीमा देखना चाहिए

MySQL> show create table slow_log\G
*************************** 1. row ***************************
       Table: slow_log
Create Table: CREATE TABLE `slow_log` (
  `start_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  `user_host` mediumtext NOT NULL,
  `query_time` time NOT NULL,
  `lock_time` time NOT NULL,
  `rows_sent` int(11) NOT NULL,
  `rows_examined` int(11) NOT NULL,
  `db` varchar(512) NOT NULL,
  `last_insert_id` int(11) NOT NULL,
  `insert_id` int(11) NOT NULL,
  `server_id` int(10) unsigned NOT NULL,
  `sql_text` mediumtext NOT NULL
) ENGINE=CSV DEFAULT CHARSET=utf8 COMMENT='Slow log'
1 row in set (0.00 sec)

यहाँ कैसे CSV फ़ाइल को धीमी लॉग टेबल के लिए MyISAM में परिवर्तित किया जाए

SET @old_log_state = @@global.slow_query_log;
SET GLOBAL slow_query_log = 'OFF';
ALTER TABLE mysql.slow_log ENGINE = MyISAM;
SET GLOBAL slow_query_log = @old_log_state;

ध्यान रखें कि परिवर्तित MyISAM में कोई इंडेक्स नहीं है।

यह 'start_time' नामक एक कॉलम है जो टाइमस्टैम्प है। इसे इस तरह अनुक्रमित करने के लिए स्वतंत्र महसूस करें:

SET @old_log_state = @@global.slow_query_log;
SET GLOBAL slow_query_log = 'OFF';
ALTER TABLE mysql.slow_log ADD INDEX (start_time);
SET GLOBAL slow_query_log = @old_log_state;

हमें पता है कि यह कैसे काम किया, कृपया !!!

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.