এর উত্তর দিতে কিছুটা দেরি হলেও প্রাসঙ্গিক অনুসন্ধানের জন্য এটি যেহেতু কারওর পক্ষে কার্যকর হবে:
ওয়ার্ডপ্রেস তার ডাটাবেস বাস্তবায়নের অংশের জন্য EAV ডাটাবেস স্কিমা ব্যবহার করে। এটি ডেটা এবং ব্যবহারকারীদের উভয়কেই প্রভাবিত করে। (এগুলিকে আলাদা টেবিলের মধ্যে রাখা হয়)
ডেটা কোণ থেকে এটি ব্যাখ্যা করতে:
ডব্লিউপি_পোস্টগুলিতে সরাসরি অ্যাক্সেসযোগ্য পোস্ট সম্পর্কিত বিবরণের পাশাপাশি প্রতিটি পোস্টের জন্য wp_postmeta টেবিলটিতে অসংখ্য মেটা পোস্ট করা হয়। পোস্টের সাথে সম্পর্কিত কোনও ডেটা (বা কাস্টম পোস্টের ধরণ)।
সমস্যাটি হ'ল, যদি আপনার কাছে পোস্ট বা পৃষ্ঠাগুলির হিপস থাকে (বা কাস্টম পোস্ট / ডেটা), মেটাতে পাওয়া যায় এমন কোনও সম্পত্তি অনুসন্ধান করা বেশ ধীর হয়ে যায়। আপনার প্রয়োজনীয় মানদণ্ডগুলির জন্য আপনি প্রথমে মেটা টেবিলের সমস্ত এন্ট্রি অনুসন্ধান করুন, তারপরে সারণী থেকে প্রাসঙ্গিক পোস্টটি পান। কিকারটি হ'ল আপনাকে পৃথকভাবে প্রতিটি মানদণ্ড অনুসন্ধান করতে হবে। ট্যাগের জন্য একটি সন্ধান করুন, আপনি 'মেটা 1' এর জন্য এক্স মানের সাথে পোস্টগুলি পাবেন, তারপরে আপনি দ্বিতীয় মানদণ্ড অনুসন্ধান করুন, বলুন, কাস্টমক্রিটরিয়া এবং কাস্টমক্রিটরিয়ায় কাস্টমক্রিটরিয়ালু 1 সহ পোস্ট আইডি পান এবং তার পরে ছেদ করুন এবং তারপরে যান যে ছেদটি দিয়ে পোস্ট টেবিল থেকে পোস্টের বিশদ।
উদাহরণ হিসাবে - WooCommerce এ 30,000 পণ্য রাখুন, এবং নীচের উত্তরে বর্ণিত হিসাবে আপনি wp_postmeta এ 1,800,000 সারি দিয়ে শেষ করবেন:
মেটা বনাম পৃথক ডাটাবেস টেবিল পোস্ট করুন
সুতরাং, এটি কেবল অনুসন্ধানকে খুব অদক্ষ করে তুলবে না (বিশেষত আপনি যখন একাধিক মানদণ্ডের জন্য wp_postmeta- এ যোগ দেন), তবে 1,8 মিল সারিগুলির মধ্যে একটি সারিও অনুসন্ধান করা পারফরম্যান্স হিট করে না।
ইএভি স্কিমার ঘাটতি।
সুতরাং প্রচুর পোস্ট সহ, ওয়ার্ডপ্রেস ডিবি বাস্তবায়ন জটিল অনুসন্ধানগুলি খুব ধীর করে তোলে।
কয়েক হাজার পোস্ট সহ একটি ওয়ার্ডপ্রেস সাইট চালানো বেশ কার্যকরী, যদি আপনি ক্যাচিং প্লাগইন ব্যবহার করেন। আপনি আরও যেতে পারেন। তবে অনুসন্ধানগুলি সমস্যা হবে।
............
ব্যবহারকারীদের ক্ষেত্রেও এটি একই - wp_usermeta একই EAV ফর্ম্যাটটিও ব্যবহার করে। তাই যদি আপনি প্রচুর ব্যবহারকারী পান এবং আপনার প্রচুর প্লাগইন রয়েছে যা বিভিন্ন ব্যবহারকারীর ডেটা ডাব্লুপিউউজারমেটাতে সঞ্চয় করে রাখে তবে আপনি একই পারফরম্যান্স হিট নেবেন।
এতগুলি ব্যবহারকারীর সাথে উল্লেখ না করার সম্ভাবনা রয়েছে যে আপনার ইতিমধ্যে বেশিরভাগ পোস্ট থাকতে পারে - যদি না আপনার অ্যাপ্লিকেশনটি বেশিরভাগ ব্যবহারকারীর সাথে (সিআরএম ইত্যাদি) করতে না পারে এবং আপনি নিজের ব্যবহারকারীর ডেটা wp_postmeta এর পরিবর্তে wp_usermeta এ সঞ্চয় করতে চান না । (যদিও অসম্ভব)।
.........
কিছু প্লাগইন রয়েছে যা মেটা এক্সিলারেটরের মতো এই সমস্যাটি ঘুরে দেখার চেষ্টা করে।
https://wordpress.org/plugins/meta-accelerator/
এই প্লাগইনটি আপনার চয়ন করা যে কোনও পোস্ট ধরণের জন্য কোনও ডেটা নেয় এবং এগুলি ফ্ল্যাট টেবিলগুলিতে রাখে। এটি অনেকগুলি অনুসন্ধানের গতি বাড়ায় এবং এটি কোনও একক মানকে জিজ্ঞাসাও করে তোলে।
তবে সেই প্লাগইনটি এখনও শৈশবে।
বিকল্পভাবে, আপনি সার্ভারে ইলাস্টিক অনুসন্ধান ইনস্টল করতে পারেন এবং ইলাস্টিকপ্রেস প্লাগইন বা অন্য কোনও প্লাগইন ব্যবহার করতে পারেন যা এ জাতীয় অনুসন্ধানগুলিকে গতি বাড়ানোর জন্য এটি ওয়ার্ডপ্রেসে সংহত করে।
PHP
স্ট্যাকের অংশটি আপনার সমস্যা হবে না (ফেসবুক একটি পরিবর্তিত পিএইচপি দিয়ে নির্মিত), তবেMySQL
খুব ভালই সীমাবদ্ধ হতে পারে।