2011-01-25 14 views
14

मैं mysql सर्वर पर किसी क्वेरी के अधिकतम चलने वाले समय को सीमित करने का एक तरीका ढूंढ रहा हूं। मुझे लगा कि यह my.cnf कॉन्फ़िगरेशन फ़ाइल के माध्यम से किया जा सकता है, लेकिन दस्तावेज़ों में प्रासंगिक कुछ भी नहीं मिला। किसी को पता है कि यह किया जा सकता है? धन्यवाद।MySQL - क्या मैं क्वेरी को चलाने के लिए अधिकतम समय को सीमित कर सकता हूं?

+1

के संभावित डुप्लिकेट [एक mysql क्वेरी के लिए एक अधिकतम निष्पादन समय निर्धारित करने के लिए कैसे?] (Http://stackoverflow.com/questions/415905/how-to-set-a-maximum-execution-time- for-a-mysql-query) – miku

+0

यह एक lock_wait_timeout को इंगित करता है, जो मुझे चाहिए। मैं क्वेरी पर एक समाप्ति समय समाप्ति चाहता हूं, भले ही लॉक अधिग्रहित किया गया हो या नहीं। – sa125

उत्तर

13

सर्वर चलाने के लिए क्वेरी भेजते समय अधिकतम रन टाइम निर्दिष्ट करने का कोई तरीका नहीं है।

  1. शो PROCESSLIST
  2. एक प्रश्न समय बड़ा के साथ सभी कनेक्शनों खोजें:

    हालांकि, यह एक क्रॉन जॉब हर अपने डेटाबेस सर्वर पर दूसरा चलाता है कि, जोड़ने और कुछ इस तरह कर रही है करने के लिए असामान्य नहीं है उन प्रक्रियाओं

+2

अच्छा विचार - धन्यवाद! आपकी स्थिति के आधार पर – sa125

+1

हर सेकेंड ओवरकिल का थोड़ा सा हो सकता है। आपको अपने अधिकतम_कनेक्शन को हिट होने से रोकने के लिए प्रक्रियाओं को मारने की आवश्यकता में कुछ विचार करना चाहिए - यह सब आपकी विशिष्ट मशीन पर लोड पर निर्भर करता है। – Ross

4

इस बीच में से प्रत्येक के लिए अपनी अधिकतम वांछित समय

  • भागो KILL [प्रक्रिया id] से ट्विटर टीम MySQL whi के लिए अपने परिवर्तन जारी किया ch इस लागू करता है:

    - Reduce unnecessary work through improved server-side statement timeout support. This allows the server to proactively cancel queries that run longer than a millisecond-granularity timeout.

    देखें http://engineering.twitter.com/2012/04/mysql-at-twitter.html और https://github.com/twitter/mysql/wiki/Statement-Timeout

  • 4

    आप इस प्रकार एक प्रश्न इस्तेमाल कर सकते हैं:

    SELECT MAX_STATEMENT_TIME=1000 * FROM table; 
    

    अद्यतन: आप max_execution_time बजाय का उपयोग करना चाहिए।

    SELECT /*+ MAX_EXECUTION_TIME(1000)*/ * FROM table; 
    

    MAX_STATEMENT_TIME MySQL 5.7.8 में max_execution_time को दिया गया था। http://dev.mysql.com/doc/refman/5.7/en/server-system-variables.html#sysvar_max_execution_time

    +0

    mysql दस्तावेज़ों का एक लिंक बहुत अच्छा रहा होगा। – m02ph3u5

    +1

    अपना उत्तर सुधारने का प्रयास करें –

    2

    http://mysqlserverteam.com/server-side-select-statement-timeouts/

    दिलचस्प उन्नयन। मैं इसे देखूंगा:

    "MySQL 5.7.4 शीर्ष स्तर के पढ़ने-योग्य चयन विवरणों के लिए, मिलीसेकंड में निर्दिष्ट सर्वर साइड निष्पादन समय सीमा सेट करने की क्षमता प्रस्तुत करता है"।

    SET GLOBAL MAX_STATEMENT_TIME=1000; 
    SET SESSION MAX_STATEMENT_TIME=2000; 
    SELECT MAX_STATEMENT_TIME=1000 * FROM table; 
    
    संबंधित मुद्दे

     संबंधित मुद्दे