আমার মিলিয়ন রেকর্ড (14,000,000) সহ একটি সাধারণ টেবিল রয়েছে এবং একটি সাধারণ প্রশ্নের জন্য এটি "ডেটা প্রেরণ" খুব বেশি সময় ব্যয় করছে।
টেবিল
CREATE TABLE IF NOT EXISTS details (
id int(11) NOT NULL,
date date NOT NULL,
time int(2) NOT NULL,
minutes_online decimal(5,0) NOT NULL,
minutes_playing decimal(5,0) NOT NULL,
minutes_chatting decimal(5,0) NOT NULL,
minutes_away decimal(5,0) NOT NULL
PRIMARY KEY (id,date,time)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci;
সাধারণ জিজ্ঞাসা
mysql> SELECT * FROM details WHERE id = 3014595;
ব্যাখ্যা করা
mysql> EXPLAIN SELECT * FROM details WHERE id = 3014595;
+----+-------------+-----------+------+---------------+---------+---------+-------+------+-------+
| id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra |
+----+-------------+-----------+------+---------------+---------+---------+-------+------+-------+
| 1 | SIMPLE | details | ref | PRIMARY | PRIMARY | 4 | const | 1482 | |
+----+-------------+-----------+------+---------------+---------+---------+-------+------+-------+
প্রশ্নের জন্য প্রোফাইল
mysql> SHOW PROFILE FOR QUERY 1;
+--------------------------------+----------+
| Status | Duration |
+--------------------------------+----------+
| starting | 0.000024 |
| checking query cache for query | 0.000078 |
| checking permissions | 0.000014 |
| Opening tables | 0.000126 |
| System lock | 0.000011 |
| Table lock | 0.000030 |
| init | 0.000027 |
| optimizing | 0.000117 |
| statistics | 0.040077 |
| preparing | 0.000029 |
| executing | 0.000006 |
| Sending data | 7.536960 |
| end | 0.000013 |
| query end | 0.000004 |
| freeing items | 0.000037 |
| storing result in query cache | 0.000006 |
| logging slow query | 0.000003 |
| cleaning up | 0.000006 |
+--------------------------------+----------+
আপনি দেখতে পাচ্ছেন যে, SELECTবিবৃতিটি সূচকটি ব্যবহার করেছে এবং কেবল 1482 টি সারি পড়ে। তবুও, কোয়েরিটি ডেটা প্রেরণে 7.536960 সেকেন্ড সময় ব্যয় করেছে। এটি ক্যোয়ারির মতো আরও অনেক সারি পড়ার মতো।
এটি একটি সহজ ক্যোয়ারী, মাত্র 7 টি ক্ষেত্র (সারি গড় 59 বাইট) এবং কোনও অভিনব ফাংশন নেই। কোন ধারণা কি এর কারণ হতে পারে?
দ্রষ্টব্য: আইডি হল ব্যবহারকারী আইডি। প্রতিটি ব্যবহারকারীর প্রতিদিনের প্রতি ঘন্টার জন্য কমপক্ষে একটি প্রবেশ থাকতে পারে। সুতরাং, আইডি অনন্য নয়।
সম্পাদনা করুন: একই কাঠামো এবং আরও অনেকগুলি সারি (34 মিলিয়ন) সহ আমার আরও একটি টেবিল রয়েছে। যদি আমি এই বৃহত্তর টেবিলটিতে একই ক্যোয়ারী চালাই তবে এটি 1 সেকেন্ডেরও কম সময়ে ফলাফলগুলি প্রদান করে।
পার্থক্যটি হ'ল বৃহত্তর টেবিলটি ছোট টেবিলের মতো এতগুলি প্রশ্ন পায় না।
- এটি কি সম্ভব যে প্রশ্নের সংখ্যা প্রক্রিয়াটি কমিয়ে দিচ্ছে? মাইএসকিউএল ক্যাশে চালু আছে। আমি কেক পিএইচপিও প্রশ্নের সংখ্যা কমাতে ক্যোরিগুলিকে ক্যাশে করছি।
- টেবিলটি সংরক্ষিত আছে এমন ফাইলটি দূষিত বা কোনও কিছুর দ্বারাই কি সম্ভব?
আপডেট ওয়েব স্তর থেকে ডেটা স্তর পৃথক করে সমস্যাটি সমাধান করা হয়েছিল। ডেটা স্তরটি র্যামে একটি আপগ্রেডও পেয়েছে এবং রেড 10 এ চলছে।
1591 rows in set (16.48 sec)আমি আবার জিজ্ঞাসা চালিয়েছি, এ কারণেই সময়কাল আলাদা। এটি এখন 16 সেকেন্ড (!!) নিয়েছে
SELECTফিরে আসে?