আপনি যদি সম্পর্ক সম্পর্কিত যুক্তির সাথে উদ্বিগ্ন না হন, সত্যিই দ্রুত পড়ার গতি চান এবং আপনি কোনও আরডিবিএমএসের সাথে কাজ করতে ইচ্ছুক হন, আমি মাইএসকিউএল বলতে পূর্বঘোষিত উদ্যোগ নেব। কেন ???
মাইআইএসএএম স্টোরেজ ইঞ্জিনটিতে একটি বিকল্প রয়েছে যা আরও ভাল পারফরম্যান্সের জন্য সারণীর শারীরিক কাঠামোকে বাড়ানোর অনুমতি দিতে পারে। সেই বিকল্পটি কী? ALTER TABLE অপশনটি ROW_FORMAT।
উদাহরণস্বরূপ, মাইএসকিউএল ডেটাবেস ডিজাইন এবং টিউনিং বইটি OW২,,। পৃষ্ঠায় ROW_FORMAT = FIXED ব্যবহার করার পরামর্শ দেয়। এটি অভ্যন্তরীণভাবে সমস্ত ভ্রচার ক্ষেত্রকে CHAR এ রূপান্তর করবে। এটি মাইআইএসএএম টেবিলটিকে আরও বড় করে তুলবে, তবে এর বিপরীতে চালিত SELECT গুলি আরও দ্রুত হবে। আমি ব্যক্তিগতভাবে এটি প্রমাণ করতে পারি। আমার একবার টেবিল ছিল যা ছিল 1.9 জিবি। আমি ALTER TABLE tblname ROW_FORMAT = FIXED দিয়ে ফর্ম্যাটটি পরিবর্তন করেছি। টেবিলটি শেষ হয়েছে 3.7 গিগাবাইট। এর বিপরীতে SELECT গুলির গতি 20-25% বেশি ছিল অন্য কিছু উন্নতি বা পরিবর্তন না করেই।
আপনার যদি ইতিমধ্যে একটি মাইআইএসএএম টেবিল থাকে যা ডেটা দিয়ে জনিত হয়? আপনি মাইআইএসএএম টেবিলের উপাত্তের ভিত্তিতে প্রস্তাবিত কলাম সংজ্ঞাগুলির জন্য মেট্রিকগুলি পেতে পারেন। কী ক্যোয়ারী সেই মেট্রিকগুলি উপস্থাপন করে?
SELECT * FROM tblname PROCEDURE ANALYSE();
প্রক্রিয়া বিশ্লেষণ () এটি ডেটা প্রদর্শন করবে না। এটি প্রতিটি কলামের মান পড়বে এবং কলাম সংজ্ঞা প্রস্তাব করবে। উদাহরণস্বরূপ, আপনার যদি এমন টাইপ কলাম থাকে যার মানগুলি 1-4 হয়, তবে 4 টি মানগুলির একটি ENUM ব্যবহার করে এটি সুপারিশ করবে। তারপরে আপনি TINYINT বা CHAR (1) ব্যবহার করতে বেছে নিতে পারেন যেহেতু তারা একই পরিমাণে জায়গা (1 বাইট) নেয়।
এখানে অন্য কিছু বিবেচনা করার বিষয় রয়েছে: যেহেতু আপনি কোনও নোএসকিউএল ডিবি ব্যবহারের বিষয়ে ভাবছিলেন, তাই আপনি কি কখনও মাইএসএএমএস কোনও নোএসকিউএল পদ্ধতিতে ব্যবহার করার কথা ভেবে দেখেছেন? এটি বেশ সম্ভব। আমি উল্লিখিত একই বইয়ের পৃষ্ঠা 175 তে হ্যান্ডলারের কাঠামোগুলি ব্যবহারের জন্য আপেক্ষিক লাগেজ ছাড়াই কোনও টেবিলটি পড়ার পরামর্শ দেয় । আসলে, পৃষ্ঠা 175 এই উদাহরণ দেয়:
CREATE TABLE customer_mileage_details
(
customer_id INT NOT NULL,
ff_number CHAR(10) NOT NULL,
transaction_date DATE NOT NULL,
mileage SMALLINT NOT NULL,
INSERT(customer_id),
INSERT (ff_number,transaction_date)
) ENGINE = MYISAM;
এই টেবিলটিতে কয়েক মিলিয়ন সারি রয়েছে। মনে করুন যে আপনার একটি ডেটা বিশ্লেষণ অ্যাপ্লিকেশন তৈরি করতে হবে যার নিম্নলিখিত প্রয়োজনীয়তা রয়েছে:
- এটি যত তাড়াতাড়ি সম্ভব তথ্যগুলির ব্লকগুলি পুনরুদ্ধার করা দরকার।
- ব্যবহারকারীর ইনপুট বা অন্যান্য কারণের উপর ভিত্তি করে এটি সম্ভবত সারণীতে "লাফিয়ে" যাবে "
- এটি সম্মতি বা অন্যান্য ডেটা অখণ্ডতার সাথে সম্পর্কিত নয়।
- ক্রস-অ্যাপ্লিকেশন টেবিল লকিংয়ের প্রয়োজন নেই।
এই কমান্ডগুলি টেবিল থেকে দ্রুত এবং ময়লা পড়ার অনুমতি দেয়:
HANDLER customer_mileage_details OPEN;
HANDLER customer_mileage_details READ ff_number FIRST WHERE ff_number=('aaetm-4441');
HANDLER customer_mileage_details READ NEXT LIMT 10;
HANDLER customer_mileage_details CLOSE;
আমি আশা করি এটি চিন্তার জন্য খাদ্য দেবে। দয়া করে এটি দেখুন।
বিচারকার্য স্থগিত রাখার আদেশ
কি আমার সম্পর্কে এই বিশেষ পোস্টটি লেখার খুব বিদ্রূপাত্মক যে আমি যে ব্যবহার করে এটি আউট-অফ-ডেট ছিল হ্যান্ডলার সম্পর্কে আগে পোস্ট Percona সার্ভার বাইনেরিতে ব্যবহৃত হচ্ছে এবং চিন্তা লিখেছেন । সেই পুরানো পোস্টের পর থেকে আমি কখনও ভাবিনি যে আমি হ্যান্ডেলার কাঠামোর সমর্থনে কিছু লিখব। আমি এখন সংশোধন দাঁড়িয়ে।