DEV Community

Sabber Hossain
Sabber Hossain

Posted on

MySQL Partitioning Guide: Improve Query Performance with Range, List, and Hash Partitioning

MySQL পার্টিশনিং একটি ডেটাবেস অপ্টিমাইজেশন টেকনিক যা বড় টেবিলকে ছোট, সহজে ব্যবস্থাপনা করা যায় এমন অংশে বিভক্ত করে। এটি ডেটার সাথে কাজ করা সহজ করে তোলে, কোয়েরি পারফরম্যান্স বৃদ্ধি করে এবং বড় ডেটাবেজের স্কেলেবিলিটি নিশ্চিত করে।

MySQL-এ পার্টিশনিংয়ের ধারণা
পার্টিশনিং এমন একটি প্রক্রিয়া যা একটি টেবিলের ডেটা বিভিন্ন অংশে (partition) ভাগ করে, যেখানে প্রতিটি অংশ টেবিলের একটি লজিক্যাল সাবসেট। যখন একটি কোয়েরি চালানো হয়, তখন ডেটাবেজ ইঞ্জিন শুধুমাত্র প্রাসঙ্গিক পার্টিশনে কাজ করে, যা ডেটা স্ক্যানের পরিমাণ কমিয়ে আনে এবং কার্যক্ষমতা বৃদ্ধি করে।

পার্টিশনিংয়ের ধরন
১. Horizontal Partitioning
এটি ডেটার সারিগুলিকে বিভক্ত করার প্রক্রিয়া। প্রতিটি পার্টিশনে সমান সংখ্যক কলাম থাকে, কিন্তু সারির সংখ্যা আলাদা হতে পারে। MySQL-এর পার্টিশনিং মূলত এই প্রকারের উপর নির্ভর করে।

MySQL-এ আনুভূমিক পার্টিশনিং প্রধানত তিনটি ভিন্ন পদ্ধতিতে করা যায়:

ক. রেঞ্জ পার্টিশনিং (Range Partitioning)
রেঞ্জ পার্টিশনিংয়ের ক্ষেত্রে, একটি নির্দিষ্ট কলামের মান যদি একটি নির্দিষ্ট পরিসরের (range) মধ্যে পড়ে, তবে সেই সারি সংশ্লিষ্ট পার্টিশনে রাখা হয়।
উদাহরণস্বরূপ, যদি আপনার একটি sales টেবিল থাকে এবং এটি year কলামের ভিত্তিতে পার্টিশন করা হয়:

CREATE TABLE sales (
    id INT,
    amount DECIMAL(10, 2),
    year INT
)
PARTITION BY RANGE (year) (
    PARTITION p1 VALUES LESS THAN (2000),
    PARTITION p2 VALUES LESS THAN (2010),
    PARTITION p3 VALUES LESS THAN (2020),
    PARTITION p4 VALUES LESS THAN MAXVALUE
);
Enter fullscreen mode Exit fullscreen mode

এখানে, ২০০০-এর আগে, ২০১০-এর আগে, এবং ২০২০-এর আগে আলাদা আলাদা পার্টিশনে ডেটা বিভক্ত হবে।

খ. লিস্ট পার্টিশনিং (List Partitioning)
লিস্ট পার্টিশনিংয়ে একটি কলামের নির্দিষ্ট মানের তালিকা অনুযায়ী সারিগুলো বিভিন্ন পার্টিশনে বিভক্ত করা হয়।
উদাহরণস্বরূপ:

CREATE TABLE sales (
    id INT,
    region VARCHAR(50),
    amount DECIMAL(10, 2)
)
PARTITION BY LIST COLUMNS (region) (
    PARTITION p1 VALUES IN ('North', 'East'),
    PARTITION p2 VALUES IN ('South', 'West')
);
Enter fullscreen mode Exit fullscreen mode

এখানে অঞ্চল অনুযায়ী ডেটা বিভক্ত হচ্ছে।

গ. হ্যাশ পার্টিশনিং (Hash Partitioning)
হ্যাশ পার্টিশনিংয়ের ক্ষেত্রে একটি কলামের মান একটি হ্যাশ ফাংশনের মাধ্যমে বিভক্ত করা হয়। এটি ডেটা সমানভাবে বিতরণ নিশ্চিত করে।

CREATE TABLE sales (
    id INT,
    amount DECIMAL(10, 2)
)
PARTITION BY HASH (id) PARTITIONS 4;
Enter fullscreen mode Exit fullscreen mode

এখানে, id কলামের মানের উপর ভিত্তি করে চারটি পার্টিশনে ডেটা স্বয়ংক্রিয়ভাবে বিভক্ত হবে।

২. উল্লম্ব পার্টিশনিং (Vertical Partitioning)
উল্লম্ব পার্টিশনিং হল ডেটার কলামগুলিকে বিভক্ত করার প্রক্রিয়া। প্রতিটি টেবিলে কিছু কলাম রাখা হয়, এবং অবশিষ্ট কলামগুলি ভিন্ন টেবিলে সংরক্ষণ করা হয়। যেহেতু MySQL উল্লম্ব পার্টিশনিং সমর্থন করে না, এটি ম্যানুয়ালি তৈরি করতে হয়।

উদাহরণস্বরূপ:
একটি বড় টেবিল users-এর সমস্ত কলাম একটি টেবিলে না রেখে, আপনি এটি দুটি টেবিলে বিভক্ত করতে পারেন:

user_personal (নাম, ইমেল, ফোন নম্বর)
user_credentials (ইউজারনেম, পাসওয়ার্ড)
Enter fullscreen mode Exit fullscreen mode

MySQL পার্টিশনিং বড় ডেটাসেট পরিচালনা এবং পারফরম্যান্স অপ্টিমাইজেশনের জন্য অত্যন্ত কার্যকর। তবে এটি ব্যবহার করার আগে ডেটার প্রকৃতি এবং কোয়েরি প্যাটার্ন বোঝা অত্যন্ত গুরুত্বপূর্ণ। সঠিকভাবে পরিকল্পনা এবং বাস্তবায়ন করা হলে, পার্টিশনিং আপনার ডেটাবেজ সিস্টেমকে আরও দ্রুত, কার্যকর এবং সহজে পরিচালনাযোগ্য করে তুলতে পারে।

আরো বিস্তারিত জানতেঃ
https://tinyurl.com/bddj776w
https://tinyurl.com/eueh24j6

Top comments (0)