2010-08-21 12 views

उत्तर

0

मेरा मानना ​​है कि प्रति पंक्ति डालने के लिए सीमित पंक्तियों की कोई परिभाषित संख्या नहीं है, लेकिन सामान्य रूप से प्रश्नों के लिए अधिकतम प्रकार का अधिकतम आकार हो सकता है।

4

आप एक INSERT कथन के साथ पंक्तियों की एक अनंत संख्या डाल सकते हैं। उदाहरण के लिए, आप एक संग्रहीत प्रक्रिया निष्पादित कर सकते हैं जिसमें लूप को एक हजार बार निष्पादित किया जाता है, प्रत्येक बार INSERT क्वेरी चलाते हैं।

या आपका आईएनएसईआरटी एक ट्रिगर की यात्रा कर सकता है जो स्वयं एक आईएनएसईआरटी करता है। जो एक और ट्रिगर यात्रा करता है। और इसी तरह।

नहीं, यह मूल्य सेट की संख्या पर निर्भर नहीं है। न ही यह बाइट्स की संख्या पर निर्भर करता है।

आपकी सीमाओं को कितनी गहराई से घोंसला हो सकता है, और यह सीमा है कि आपका कुल विवरण कितना समय है। इन दोनों को संदर्भित किया गया है, विडंबना यह है कि thedailywtf.com पर। हालांकि, ऊपर वर्णित दोनों साधनों को इन सीमाओं के आसपास मिलता है।

+0

आपका उदाहरण एकाधिक सम्मिलित चलाने के लिए कर रहे हैं, और यह की अनेक पंक्तियों सम्मिलित करने के बारे प्रदर्शित नहीं करता है ** एक ** सम्मिलित बयान .. – Lukman

+0

@Lukman: एक सम्मिलित करें क्वेरी डेटाबेस से टकराने के अनेक निवेशन में परिणाम कर सकते । यह सिर्फ एक बात है कि किसकी गिनती है। – Borealid

+2

यह सच है कि, लेकिन आपका पहला उदाहरण एक लूप में क्वेरी चलाने के बारे में दिखाता है जिसमें प्रत्येक लूप एक INSERT कथन चला रहा है, और यह उस पंक्ति में शामिल होने वाले किसी भी INSERT कथन के बारे में कुछ भी नहीं कहता है। यह सिर्फ जोर का विषय है। – Lukman

74

आप INSERT ... SELECT पैटर्न का उपयोग कर असीमित बड़ी संख्या में रिकॉर्ड डाल सकते हैं, बशर्ते आपके पास अन्य सारणी में वे रिकॉर्ड हों या उनका हिस्सा हो।

लेकिन यदि आप INSERT ... VALUES पैटर्न का उपयोग कर मानों को कड़ी मेहनत कर रहे हैं, तो आपके कथन कितने बड़े/लंबे समय तक सीमित है: max_allowed_packet जो क्लाइंट द्वारा डेटाबेस सर्वर पर भेजे गए SQL कथन की लंबाई को सीमित करता है, और यह किसी भी प्रकार के प्रश्नों को प्रभावित करता है न केवल INSERT कथन के लिए।

19

क्वेरी सामान्य रूप से max_allowed_packet तक सीमित है।

1

यह max_allowed_packet द्वारा सीमित है।
आप इसका उपयोग कर निर्दिष्ट कर सकते हैं: mysqld --max_allowed_packet=32M यह डिफ़ॉल्ट 16 एम है।
तुम भी में my.cnf में निर्दिष्ट कर सकते हैं/आदि/mysql/

20

आदर्श रूप में, Mysql एकल डालने में पंक्तियों सृष्टि के अनंत संख्या (एक ही बार में) लेकिन जब एक

MySQL ग्राहक या mysqld सर्वर एक पैकेट max_allowed_packet बाइट्स से भी बड़ा प्राप्त करता है, यह एक पैकेट बहुत बड़ी त्रुटि और बंद जारी करता है की अनुमति देते हैं संपर्क।

क्या डिफ़ॉल्ट मान max_allowed_packet चर के लिए है देखने के लिए, MySQL में में निम्न आदेश निष्पादित करें:

show variables like 'max_allowed_packet';

स्टैंडर्ड MySQL स्थापना 1048576 बाइट्स (1MB) का डिफ़ॉल्ट मान है। इसे सत्र या कनेक्शन के लिए उच्च मान पर सेट करके बढ़ाया जा सकता है।

यह मान सेट हर किसी के लिए 500MB के लिए (कि क्या वैश्विक अर्थ है):

show variables like 'max_allowed_packet';

अब यह होना चाहिए:

SET GLOBAL max_allowed_packet=524288000;

नए कनेक्शन के साथ नए टर्मिनल में अपने परिवर्तन की जांच अनंत रिकॉर्ड डालने के लिए किसी त्रुटि के बिना काम करें। 1390 तैयार बयान भी कई प्लेसहोल्डर शामिल हैं: धन्यवाद

+4

500 एमबी अनंत नहीं है। यह डिफ़ॉल्ट मान से बहुत बड़ा तरीका है, लेकिन फिर भी, अनंत नहीं है। – Carlos2W

1

आप max_allowed_packet सीमा और

त्रुटि मारा जाएगा।

आप 65535 प्लेसहोल्डर्स को एक एसक्यूएल में डाल सकते हैं। इसलिए यदि आपके पास एक पंक्ति में दो कॉलम हैं, तो आप एक एसक्यूएल में 32767 पंक्तियां डाल सकते हैं।

Import of 50K+ Records in MySQL Gives General error: 1390 Prepared statement contains too many placeholders

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