আমাদের ভার্চুয়াল মেশিনে একটি সাধারণ ওয়েব অ্যাপ্লিকেশন চলছে যা InnoDB ইঞ্জিনের সাহায্যে একটি MySQL 5.5 ডাটাবেসে এর ডেটা সংরক্ষণ করে। প্রায় তিন বছর ধরে সবকিছু ঠিকঠাক কাজ করেছিল, তবে হঠাৎ এটি অত্যন্ত ধীর হয়ে গেছে।
উদাহরণস্বরূপ, আমার কাছে খুব সাধারণ টেবিল হোল্ডিং ঠিকানা রয়েছে:
CREATE TABLE `addresses` (
`address_id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(64) CHARACTER SET latin1 NOT NULL,
`firstname` varchar(64) CHARACTER SET latin1 NOT NULL,
`street` varchar(64) CHARACTER SET latin1 NOT NULL,
`housenumber` varchar(16) CHARACTER SET latin1 NOT NULL,
`zip` varchar(5) CHARACTER SET latin1 NOT NULL,
`city` varchar(64) CHARACTER SET latin1 NOT NULL,
`email` varchar(64) CHARACTER SET latin1 NOT NULL,
`phone` varchar(16) CHARACTER SET latin1 NOT NULL,
`birthdate` date NOT NULL,
PRIMARY KEY (`address_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin
এই টেবিলটি প্রায় 800 টি এন্ট্রি ধারণ করে যা সত্যিই খুব বেশি নয়। কিন্তু ক্যোয়ারী চালাচ্ছে
SELECT * FROM addresses
পরীক্ষার উদ্দেশ্যে, এটি শেষ হয় না বলে মনে হয়। আমি এটি সার্ভারে মাইএসকিএল সিএলআই দিয়ে পরীক্ষা করেছি: এটি টেবিলের কিছু সারি আউটপুট করে এবং পরবর্তী সারিগুলি আউটপুট না হওয়া পর্যন্ত খুব দীর্ঘ সময় অপেক্ষা করে।
সুতরাং এটি ডেটা প্রেরণ পর্বে সমস্যা হতে পারে তবে আমি নিশ্চিত নই।
ভিএমটিতে 2 জিবি র্যাম রয়েছে এবং কেবল 320 এমবি ব্যবহৃত হয়। সিপিইউও খুব কম 1 থেকে 2% এ চলে। মাইটোপ সার্ভারটি অবরুদ্ধ করে এমন কোনও কোয়েরি দেখায় না। আইটি প্রশাসক বলেছেন যে তারা হার্ডওয়ারের দিক থেকে কোনও পরিবর্তন করেনি।
আমি ইতিমধ্যে ডাটাবেস সার্ভার পুনরায় চালু করা, ভার্চুয়াল মেশিনটি পুনরায় চালু করার মতো কিছু জিনিস চেষ্টা করেছি। কিছুই সাহায্য করেনি।
সম্পাদনা:
EXPLAIN SELECT * FROM addresses
আমাকে এই ফলাফল দেয়:
+----+-------------+-----------+------+---------------+------+---------+------+------+-------+
| id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra |
+----+-------------+-----------+------+---------------+------+---------+------+------+-------+
| 1 | SIMPLE | addresses | ALL | NULL | NULL | NULL | NULL | 793 | |
+----+-------------+-----------+------+---------------+------+---------+------+------+-------+
1 row in set (0.00 sec)
mysql -u username -ppassword mydb -e 'SELECT * FROM addresses
আউটপুট করছে ধীরে ধীরে, তবে `> test.txt` যুক্ত করে এটি খুব দ্রুত চলে। এখন এটি সম্ভবত অন্যরকম প্রশ্ন হবে !? আমি কীভাবে এই বিষয়ে তদন্ত করতে পারি?