এই অনলাইনের জন্য মানদণ্ডের অভাব থেকে আমি কিছুটা বিরক্ত হয়েছিলাম, তাই আমি নিজেই একটি পরীক্ষা চালিয়েছিলাম।
যদিও এটি আমি একটি নিয়মিত বেসিকের উপর না করি তা দ্রষ্টব্য, সুতরাং দয়া করে আমার সেটআপটি এবং এমন কোনও কারণের জন্য ফলাফলগুলি অনিচ্ছাকৃতভাবে প্রভাবিত করতে পারে তার জন্য পদক্ষেপগুলি পরীক্ষা করে দেখুন এবং আপনার উদ্বেগগুলি মন্তব্যে পোস্ট করুন।
সেটআপটি নিম্নরূপ ছিল:
- ইন্টেল কোর ™ i7-7500U সিপিইউ @ 2.70GHz × 4
- 15.6 জিআইবি র্যাম, যার মধ্যে আমি পরীক্ষার সময় প্রায় 8 জিবি নিখরচায় নিশ্চিত করেছিলাম।
- 148.6 গিগাবাইট এসএসডি ড্রাইভ, প্রচুর পরিমাণে মুক্ত স্থান সহ।
- উবুন্টু 16.04 64-বিট
- মাইএসকিউএল ভার 14.14 লিনাক্সের জন্য 5.7.20 ডিস্ট্রিবিউট করুন (x86_64)
টেবিলগুলি:
create table jan_int (data1 varchar(255), data2 int(10), myindex tinyint(4)) ENGINE=InnoDB;
create table jan_int_index (data1 varchar(255), data2 int(10), myindex tinyint(4), INDEX (myindex)) ENGINE=InnoDB;
create table jan_char (data1 varchar(255), data2 int(10), myindex char(6)) ENGINE=InnoDB;
create table jan_char_index (data1 varchar(255), data2 int(10), myindex char(6), INDEX (myindex)) ENGINE=InnoDB;
create table jan_varchar (data1 varchar(255), data2 int(10), myindex varchar(63)) ENGINE=InnoDB;
create table jan_varchar_index (data1 varchar(255), data2 int(10), myindex varchar(63), INDEX (myindex)) ENGINE=InnoDB;
তারপরে, আমি পিএইচপি স্ক্রিপ্ট দিয়ে প্রতিটি টেবিলের মধ্যে 10 মিলিয়ন সারি পূরণ করেছি যার সারমর্মটি এর মতো:
$pdo = get_pdo();
$keys = [ 'alabam', 'massac', 'newyor', 'newham', 'delawa', 'califo', 'nevada', 'texas_', 'florid', 'ohio__' ];
for ($k = 0; $k < 10; $k++) {
for ($j = 0; $j < 1000; $j++) {
$val = '';
for ($i = 0; $i < 1000; $i++) {
$val .= '("' . generate_random_string() . '", ' . rand (0, 10000) . ', "' . ($keys[rand(0, 9)]) . '"),';
}
$val = rtrim($val, ',');
$pdo->query('INSERT INTO jan_char VALUES ' . $val);
}
echo "\n" . ($k + 1) . ' millon(s) rows inserted.';
}
জন্য int
টেবিল, বিট ($keys[rand(0, 9)])
শুধু প্রতিস্থাপন করা হয়েছে rand(0, 9)
, এবং varchar
টেবিল, আমি পূর্ণ অঙ্গরাজ্য নাম ব্যবহার করা হয়, কাটিং বা তাদের 6 অক্ষর পর্যন্ত বিস্তৃত ছাড়া।generate_random_string()
একটি 10-বর্ণের এলোমেলো স্ট্রিং উত্পন্ন করে।
তারপরে আমি মাইএসকিউএল চালিয়েছিলাম:
SET SESSION query_cache_type=0;
- জন্য
jan_int
টেবিল:
SELECT count(*) FROM jan_int WHERE myindex = 5;
SELECT BENCHMARK(1000000000, (SELECT count(*) FROM jan_int WHERE myindex = 5));
- অন্যান্য সারণী, উপরে হিসাবে একই সঙ্গে, জন্য
myindex = 'califo'
জন্য char
টেবিল ও myindex = 'california'
জন্য varchar
টেবিল।
দ্য টাইমস অফ BENCHMARK
প্রতিটি টেবিলের উপর ক্যোয়ারী:
- জান_িন্ট: 21.30 সেকেন্ড
- jan_int_index: 18.79 সেকেন্ড
- জান_চর: 21.70 সেকেন্ড
- jan_char_index: 18.85 সেকেন্ড
- জান_ওয়ারচর: 21.76 সেকেন্ড
- জান_ওয়ারচর_আইডেক্স: 18.86 সেকেন্ড
সারণী ও সূচী আকারগুলির বিষয়ে, এখানে show table status from janperformancetest;
(ডাব্লু / কয়েকটি কলাম দেখানো হয়নি):
|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| Name | Engine | Version | Row_format | Rows | Avg_row_length | Data_length | Max_data_length | Index_length | Data_free | Auto_increment | Collation |
|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| jan_int | InnoDB | 10 | Dynamic | 9739094 | 43 | 422510592 | 0 | 0 | 4194304 | NULL | utf8mb4_unicode_520_ci |
| jan_int_index | InnoDB | 10 | Dynamic | 9740329 | 43 | 420413440 | 0 | 132857856 | 7340032 | NULL | utf8mb4_unicode_520_ci |
| jan_char | InnoDB | 10 | Dynamic | 9726613 | 51 | 500170752 | 0 | 0 | 5242880 | NULL | utf8mb4_unicode_520_ci |
| jan_char_index | InnoDB | 10 | Dynamic | 9719059 | 52 | 513802240 | 0 | 202342400 | 5242880 | NULL | utf8mb4_unicode_520_ci |
| jan_varchar | InnoDB | 10 | Dynamic | 9722049 | 53 | 521142272 | 0 | 0 | 7340032 | NULL | utf8mb4_unicode_520_ci |
| jan_varchar_index | InnoDB | 10 | Dynamic | 9738381 | 49 | 486539264 | 0 | 202375168 | 7340032 | NULL | utf8mb4_unicode_520_ci |
|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
আমার উপসংহারটি হল যে এই বিশেষ ব্যবহারের ক্ষেত্রে কোনও পারফরম্যান্সের পার্থক্য নেই।