अलग-अलग डेटाबेस में एकाधिक तालिकाओं बनाम एकल डेटाबेस में एकाधिक तालिकाओं के बीच कोई महत्वपूर्ण प्रदर्शन अंतर नहीं होना चाहिए।
MySQL में, डेटाबेस (मानक SQL इसके लिए "स्कीमा" शब्द का उपयोग करता है) मुख्य रूप से तालिकाओं के लिए नाम स्थान के रूप में कार्य करता है। एक डेटाबेस में केवल कुछ विशेषताएँ होती हैं, उदा। डिफ़ॉल्ट वर्ण सेट और संयोजन। और GRANT
. का वह उपयोग प्रति डेटाबेस एक्सेस विशेषाधिकारों को नियंत्रित करना सुविधाजनक बनाता है, लेकिन इसका प्रदर्शन से कोई लेना-देना नहीं है।
आप एक ही कनेक्शन से किसी भी डेटाबेस में तालिकाओं तक पहुंच सकते हैं (बशर्ते वे MySQL सर्वर के एक ही उदाहरण द्वारा प्रबंधित किए जाते हैं)। आपको बस टेबल नाम को क्वालिफाई करना है:
SELECT * FROM database17.accounts_table;
यह विशुद्ध रूप से एक वाक्यात्मक अंतर है। इसका प्रदर्शन पर कोई प्रभाव नहीं होना चाहिए।
भंडारण के संबंध में, आप टेबल को फ़ाइल-प्रति-डेटाबेस में व्यवस्थित नहीं कर सकते क्योंकि @Chris अनुमान लगाते हैं। MyISAM स्टोरेज इंजन के साथ, आपके पास हमेशा प्रति टेबल एक फाइल होती है। InnoDB स्टोरेज इंजन के साथ, आपके पास या तो स्टोरेज फाइलों का एक सेट होता है जो सभी तालिकाओं को जोड़ता है, या फिर आपके पास प्रति टेबल एक फाइल होती है (यह पूरे MySQL सर्वर के लिए कॉन्फ़िगर किया गया है, प्रति डेटाबेस नहीं)। किसी भी मामले में, एकल डेटाबेस बनाम कई डेटाबेस में टेबल बनाने के लिए कोई प्रदर्शन लाभ या नुकसान नहीं है।
कई MySQL कॉन्फ़िगरेशन पैरामीटर नहीं हैं जो प्रति डेटाबेस काम करते हैं। सर्वर के प्रदर्शन को प्रभावित करने वाले अधिकांश पैरामीटर सर्वर के दायरे में होते हैं।
बैकअप के संबंध में, आप mysqldump
. के तर्क के रूप में तालिकाओं का एक सबसेट निर्दिष्ट कर सकते हैं आज्ञा। कमांड-लाइन पर सभी तालिकाओं को नाम दिए बिना, प्रति डेटाबेस तालिकाओं के तार्किक सेट का बैकअप लेना अधिक सुविधाजनक हो सकता है। लेकिन जब आप बैकअप कमांड दर्ज करते हैं तो इससे प्रदर्शन पर कोई फर्क नहीं पड़ता, केवल आपके लिए सुविधा होती है।