মাইআইএসএএম এর তুলনায় ইনোডিবি 100x এ সহজ কেন নির্বাচন করা হচ্ছে?


33

আমার বেশ বিরক্তিকর সমস্যা আছে আমি INNODB কে আমার প্রধান ডাটাবেস ইঞ্জিন হিসাবে ব্যবহার করতে চাই এবং মাইআইএসএএম ছেড়ে দিতে চাই কারণ আমার অতিরিক্ত প্রয়োজনের জন্য গন্ডেরা-ক্লাস্টার অপ্রয়োজনীয়তার জন্য প্রয়োজন।

আমি newbb_postটেবিলটি অনুলিপি করে একটি নতুন টেবিলের অনুলিপি করেছি ( সেটির বর্ণনা অনুসরণ করে) এবং এটিকে newbb_innopostInnoDB তে পরিবর্তন করেছি। সারণীগুলি বর্তমানে 5,390,146প্রতিটি এন্ট্রি ধারণ করে।

নতুন করে শুরু করা ডাটাবেসে এই নির্বাচনগুলি চালানো (সুতরাং কোনও ক্যাচিং এই মুহুর্তে জড়িত না!) ডাটাবেসটি নিম্নলিখিত ফলাফল দেয় (সম্পূর্ণ আউটপুট বাদ দিয়ে, দয়া করে নোট করুন যে আমি ডাটাবেসটিকে ফলাফলগুলি বাছাই করতে বলি না):

Post.postid, post.attach থেকে newbb_post হিসাবে পোস্ট করুন যেখানে পোস্ট.থ্রেডিড = 51506;

।
।
| 5401593 | 0 |
| 5401634 | 0 |
+ + --------- + + -------- + +
62510 সারি সেট (0.13 সেকেন্ড)
Post.postid, post.attach from newbb_innopost AS পোস্ট WHERE post.threadid = 51506;
।
।
| 5397410 | 0 |
| 5397883 | 0 |
+ + --------- + + -------- + +
62510 সারি সেট (1 মিনিট 22.19 সেকেন্ড)

0.13 সেকেন্ড থেকে 86.19 সেকেন্ড (!)

আমি ভাবছি কেন এমন হচ্ছে? আমি এখানে InnoDB এর সাথে জড়িত স্ট্যাকেক্সচেঞ্জে কিছু উত্তর পড়েছি এবং কিছুগুলি innodb_buffer_poolইনস্টলড র‌্যামের 80% আকার বাড়ানোর পরামর্শ দিচ্ছে। এটি সমস্যার সমাধান করবে না, যে কোনও নির্দিষ্ট আইডির প্রাথমিক ক্যোয়ারী কমপক্ষে 50x দীর্ঘ সময় নেয় এবং পুরো ওয়েবসভারটি স্টল করে, ডাটাবেসের জন্য সংযোগ এবং ক্যোয়ারী সন্ধান করে। এরপরে ক্যাশে / বাফারটি লাথি মারতে পারে তবে এই ডাটাবেসে 100.000 এরও বেশি থ্রেড রয়েছে, সুতরাং সম্ভবত সম্ভবত ক্যাশে সমস্ত প্রাসঙ্গিক ক্যোয়ারী সরবরাহ করবে না।

উপরের প্রশ্নগুলি সহজ (কোনও যোগ দেয় না), এবং সমস্ত কীগুলি ব্যবহৃত হয়:

পোস্ট.পোস্টটিড, পোস্ট.ট্যাচ থেকে পোস্ট করুন পোস্ট করুন, যেখানে post.threadid = 51506;
+ + ------ + + ------------- + + ------- + + ------ + + ------------- ---------------------------------- + + ---------- + + ---- ----- + + ------- + + -------- + + ------- + +
| আইডি | নির্বাচন_প্রকার | টেবিল | প্রকার | সম্ভব_কিজ | কী | key_len | রেফ | সারি | অতিরিক্ত |
+ + ------ + + ------------- + + ------- + + ------ + + ------------- ---------------------------------- + + ---------- + + ---- ----- + + ------- + + -------- + + ------- + +
| 1 | সরল | পোস্ট | রেফ | থ্রেডিড, থ্রেডিড_2, থ্রেডিডি_ভিজিবল_ডেটলাইন | থ্রেডিড | 4 | কনস্ট্যান্ট | 120144 | |
+ + ------ + + ------------- + + ------- + + ------ + + ------------- ---------------------------------- + + ---------- + + ---- ----- + + ------- + + -------- + + ------- + +

এটি মাইআইএসএএম-সারণী:

সারণী তৈরি করুন `newbb_post` (
  (পোস্ট) (10) স্বাক্ষরিত স্বতন্ত্র নন স্বতঃসিদ্ধ,
  `থ্রেডিড ইনট (10) স্বাক্ষরিত নয় '0' খসড়া,
  `পেরেনটিড ইন ইন (10) স্বাক্ষরিত নয় '0' অবশ্যই ডিফল্ট হবে,
  `ব্যবহারকারীর নাম` বর্ণনাকার (100) নকল করা উচিত নয় '',
  `ইউজারআইডি-ইন (10) স্বাক্ষরিত নয় '0' ডিফল্ট হবে না,
  `শিরোনাম` বর্ণাচরণ (250) নষ্ট হবে না '',
  `ডেটলাইন-ইন (10) স্বাক্ষরিত নয় '0' বাতিল হবে,
  `পেজ টেক্সট` মিডিয়ামটেক্সট,
  `অনুমতিমিলি` স্মার্টিন্ট ()) '0' নয়,
  ign স্বাক্ষর - স্মার্টিন্ট (') অবশ্যই' 0 'নয়,
  ip আইপ্যাড্রেস ভার্চর (15) নষ্ট হবে না '',
  `আইকনআইডি` স্মার্টিন্ট (5) স্বাক্ষরিত নয় '0' ডিফল্ট হবে না,
  `দৃশ্যমান` স্ক্রিনেন্ট ()) '0' খালি নয়,
  `সংযুক্তি (ছোট) (5) স্বাক্ষরিত নয় '0' ডিফল্ট হবে না,
  `লঙ্ঘন` স্মার্টিন্ট (5) স্বাক্ষরিত নয় '0' খালি,
  `রিপোর্টথ্রেডিড ইন (10) স্বাক্ষরিত নয় '0' ডিফল্ট,
  `Importthreadidread bigint (20) '0' খায় না,
  `আমদানিপোস্টিডিগ বিগিন্ট (20) '0' খালি নয়,
  `রূপান্তর_2_utf8` ইন্ট (11) নাল নয়,
  t htmlstate` enum ('অফ', 'অন', 'on_nl2br') 'অন_এনএল 2 বিআর' নয়,
  প্রাথমিক কী (`পোস্টটিড),
  কী `থ্রেডিড` (` থ্রেডিড, `ইউজারিড`),
  KEY `Importpost_index` (` Importpostid`),
  KEY `তারিখরেখা (` তারিখরেখা),
  কী `থ্রেডিড_2` (` থ্রেডিড, `দৃশ্যমান`,` তারিখরেখা),
  KEY `রূপান্তর__utf8` (` রূপান্তরিত_আউটফ 8`),
  কেই `থ্রেডিড_ভিজিবল_ডেটলাইন` (` থ্রেডিডি, `দৃশ্যমান`,` ডেটলাইন`, `ইউজারিডি,` পোস্টটিড),
  কী ip আইপ্যাড্রেস (ip আইপ্যাড্রেস),
  KEY `userid` (` userid`, `পেরেন্টিডি),
  KEY `user_date` (` userid`, `তারিখরেখা)
) ইঞ্জিন = মাইসাম স্বয়ংক্রিয় ক্রিমেন্ট = 5402802 চ্যালেঞ্জ চিঠিটি = ল্যাটিন 1

এবং এটি ইনোডিবি টেবিল (এটি ঠিক একই রকম):

সারণী তৈরি করুন `newbb_innopost` (
  (পোস্ট) (10) স্বাক্ষরিত স্বতন্ত্র নন স্বতঃসিদ্ধ,
  `থ্রেডিড ইনট (10) স্বাক্ষরিত নয় '0' খসড়া,
  `পেরেনটিড ইন ইন (10) স্বাক্ষরিত নয় '0' অবশ্যই ডিফল্ট হবে,
  `ব্যবহারকারীর নাম` বর্ণনাকার (100) নকল করা উচিত নয় '',
  `ইউজারআইডি-ইন (10) স্বাক্ষরিত নয় '0' ডিফল্ট হবে না,
  `শিরোনাম` বর্ণাচরণ (250) নষ্ট হবে না '',
  `ডেটলাইন-ইন (10) স্বাক্ষরিত নয় '0' বাতিল হবে,
  `পেজ টেক্সট` মিডিয়ামটেক্সট,
  `অনুমতিমিলি` স্মার্টিন্ট ()) '0' নয়,
  ign স্বাক্ষর - স্মার্টিন্ট (') অবশ্যই' 0 'নয়,
  ip আইপ্যাড্রেস ভার্চর (15) নষ্ট হবে না '',
  `আইকনআইডি` স্মার্টিন্ট (5) স্বাক্ষরিত নয় '0' ডিফল্ট হবে না,
  `দৃশ্যমান` স্ক্রিনেন্ট ()) '0' খালি নয়,
  `সংযুক্তি (ছোট) (5) স্বাক্ষরিত নয় '0' ডিফল্ট হবে না,
  `লঙ্ঘন` স্মার্টিন্ট (5) স্বাক্ষরিত নয় '0' খালি,
  `রিপোর্টথ্রেডিড ইন (10) স্বাক্ষরিত নয় '0' ডিফল্ট,
  `Importthreadidread bigint (20) '0' খায় না,
  `আমদানিপোস্টিডিগ বিগিন্ট (20) '0' খালি নয়,
  `রূপান্তর_2_utf8` ইন্ট (11) নাল নয়,
  t htmlstate` enum ('অফ', 'অন', 'on_nl2br') 'অন_এনএল 2 বিআর' নয়,
  প্রাথমিক কী (`পোস্টটিড),
  কী `থ্রেডিড` (` থ্রেডিড, `ইউজারিড`),
  KEY `Importpost_index` (` Importpostid`),
  KEY `তারিখরেখা (` তারিখরেখা),
  কী `থ্রেডিড_2` (` থ্রেডিড, `দৃশ্যমান`,` তারিখরেখা),
  KEY `রূপান্তর__utf8` (` রূপান্তরিত_আউটফ 8`),
  কেই `থ্রেডিড_ভিজিবল_ডেটলাইন` (` থ্রেডিডি, `দৃশ্যমান`,` ডেটলাইন`, `ইউজারিডি,` পোস্টটিড),
  কী ip আইপ্যাড্রেস (ip আইপ্যাড্রেস),
  KEY `userid` (` userid`, `পেরেন্টিডি),
  KEY `user_date` (` userid`, `তারিখরেখা)
) ইঞ্জিন = ইনোডিবি স্বয়ংক্রিয় ক্রিমেন্ট = 5402802 চ্যালেঞ্জ অক্ষর = ল্যাটিন 1

সার্ভার, 32 জিবি র‌্যাম সহ:

সার্ভার সংস্করণ: 10.0.12-মারিয়াডিবি -1 ~ বিশ্বাসযোগ্য-wsrep-log mariadb.org বাইনারি বিতরণ, wsrep_25.10.r4002

আপনার যদি সমস্ত ইনডোডবি_ ভেরিয়েবল সেটিংয়ের প্রয়োজন হয় তবে আমি এটিকে এই পোস্টে সংযুক্ত করতে পারি।

হালনাগাদ:

আমি প্রাথমিক সূচকগুলি বাদ দিয়ে সমস্ত সূচকগুলি বাদ দিয়েছি, তারপরে ফলাফলটি দেখতে এরকম দেখাচ্ছে:

।
।
| 5402697 | 0 |
| 5402759 | 0 |
+ + --------- + + -------- + +
62510 সারি সেট (29.74 সেকেন্ড)
পোস্ট.পোস্টটিড, পোস্ট.ট্যাচ থেকে পোস্ট করুন পোস্ট করুন, যেখানে post.threadid = 51506;
+ + ------ + + ------------- + + ------- + + ------ + + ------------- - + + ------ + + --------- + + ------ + + --------- + + ------------- + +
| আইডি | নির্বাচন_প্রকার | টেবিল | প্রকার | সম্ভব_কিজ | কী | key_len | রেফ | সারি | অতিরিক্ত |
+ + ------ + + ------------- + + ------- + + ------ + + ------------- - + + ------ + + --------- + + ------ + + --------- + + ------------- + +
| 1 | সরল | পোস্ট | সব | নুল | নুল | নুল | নুল | 5909836 | যেখানে ব্যবহার |
+ + ------ + + ------------- + + ------- + + ------ + + ------------- - + + ------ + + --------- + + ------ + + --------- + + ------------- + +
1 সারি সেট (0.00 সেকেন্ড)

এর পরে আমি কেবল একটি সূচককে মিক্স, থ্রেডিডে যুক্ত করেছি, ফলাফলগুলি নিম্নলিখিত:

।
।
| 5402697 | 0 |
| 5402759 | 0 |
+ + --------- + + -------- + +
62510 সারি সেট (11.58 সেকেন্ড)
পোস্ট.পোস্টটিড, পোস্ট.ট্যাচ থেকে পোস্ট করুন পোস্ট করুন, যেখানে post.threadid = 51506;
+ + ------ + + ------------- + + ------- + + ------ + + ------------- - + + ---------- + + --------- + + ------- + + -------- + + ------- + +
| আইডি | নির্বাচন_প্রকার | টেবিল | প্রকার | সম্ভব_কিজ | কী | key_len | রেফ | সারি | অতিরিক্ত |
+ + ------ + + ------------- + + ------- + + ------ + + ------------- - + + ---------- + + --------- + + ------- + + -------- + + ------- + +
| 1 | সরল | পোস্ট | রেফ | থ্রেডিড | থ্রেডিড | 4 | কনস্ট্যান্ট | 124622 | |
+ + ------ + + ------------- + + ------- + + ------ + + ------------- - + + ---------- + + --------- + + ------- + + -------- + + ------- + +
1 সারি সেট (0.00 সেকেন্ড)

আশ্চর্যের বিষয় হল যে কোনও প্রাসঙ্গিক সূচী ছাড়াই সম্পূর্ণ স্ক্যানটি সূচকগুলি (!) ব্যবহার করে 88 সেকেন্ডের তুলনায় 29 সেকেন্ড সময় নিয়েছিল।

একমাত্র সঠিকভাবে তৈরি সূচি সহ এটি এখনও 11 সেকেন্ড সময় নিতে সম্পূর্ণ হতে পারে - সত্যিকারের বিশ্বের ব্যবহারের জন্য এখনও খুব ধীর।

আপডেট 2:

ঠিক একই হার্ডওয়্যার কনফিগারেশন এবং ঠিক একই ডাটাবেস / টেবিল সহ আমি অন্য সার্ভারে মাইএসকিউএল (5.5.38-0ubuntu0.14.04.1 (উবুন্টু) সেটআপ করি।

ফলাফলগুলি প্রায় একই, প্রথম মাইএসএএম টেবিল:

।
।
| 5401593 | 0 |
| 5401634 | 0 |
+ + --------- + + -------- + +
62510 সারি সেট (0.14 সেকেন্ড)

এবং এটি InnoDB টেবিলের ফলাফল

।
।
| 5397410 | 0 |
| 5397883 | 0 |
+ + --------- + + -------- + +
62510 সারি সেট (1 মিনিট 17.63 সেকেন্ড)

আপডেট 3: my.cnf এর বিষয়বস্তু

# মারিয়াডিবি ডাটাবেস সার্ভার কনফিগারেশন ফাইল।
#
# আপনি এই ফাইলটির একটিতে অনুলিপি করতে পারেন:
# - "/etc/mysql/my.cnf" বৈশ্বিক বিকল্প সেট করতে,
ব্যবহারকারী - নির্দিষ্ট বিকল্পগুলি সেট করতে # - "~ / .my.cnf"।
# 
# প্রোগ্রামটি সমর্থিত সমস্ত দীর্ঘ বিকল্প ব্যবহার করতে পারে।
# উপলভ্য বিকল্পগুলির একটি তালিকা পেতে --help সহ প্রোগ্রাম চালান
এটি কী বুঝতে পারে এবং ব্যবহার করবে তা দেখতে প্রিন্ট-ডিফল্ট।
#
# ব্যাখ্যার জন্য দেখুন
# http://dev.mysql.com/doc/mysql/en/server-system-variables.html

# এটি সমস্ত মাইএসকিএল ক্লায়েন্টকে দেওয়া হবে
# এটি রিপোর্ট করা হয়েছে যে পাসওয়ার্ডগুলি টিক / কোট দিয়ে আবদ্ধ করা উচিত
# এসক্রিপ্লেইসে যদি তাদের "#" অক্ষর থাকে ...
# সকেটের অবস্থান পরিবর্তন করার সময় /etc/mysql/debian.cnf সম্পাদনা করতে ভুলবেন না।
[ক্লায়েন্টের]
পোর্ট = 3306
সকেট = /var/run/mysqld/mysqld.sock

# কিছু নির্দিষ্ট প্রোগ্রামের জন্য এন্ট্রি এখানে দেওয়া হল
# নিম্নলিখিত মানগুলি ধরে নিয়েছে আপনার কমপক্ষে 32 এম র্যাম রয়েছে

# এটি আনুষ্ঠানিকভাবে [Safe_mysqld] নামে পরিচিত ছিল। উভয় সংস্করণ বর্তমানে পার্স করা হয়েছে।
[Mysqld_safe]
সকেট = /var/run/mysqld/mysqld.sock
সুন্দর = 0

[Mysqld]
#
# * মৌলিক বৈশিষ্ট্যসহ
#
ব্যবহারকারী = mysql
পিড-ফাইল = /var/run/mysqld/mysqld.pid
সকেট = /var/run/mysqld/mysqld.sock
পোর্ট = 3306
ভিত্তিক = / usr
ডেটাডির = / ভার / লিব / মাইএসকিএল
tmpdir = / tmp
lc_messages_dir = / usr / share / mysql
lc_messages = en_US
লাফালাফি-বহিরাগত-লকিং
#
# স্কিপ-নেটওয়ার্কিংয়ের পরিবর্তে ডিফল্ট এখন কেবলমাত্র শুনতে হবে
# লোকালহোস্ট যা আরও সামঞ্জস্যপূর্ণ এবং কম সুরক্ষিত নয়।
বাইন্ড-ঠিকানা = 127.0.0.1
#
# * ফাইন টিউনিং
#
সর্বোচ্চ_সংযোগ = 100
কানেক্ট_টাইমআউট = 5
অপেক্ষা_টাইমআউট = 600
সর্বোচ্চ_নোলা_প্যাকেট = 16 এম
থ্রেড_ক্যাচি_সাইজ = 128
সাজানো_বফার_সাইজ = 4 এম
বাল্ক_ইন_টার_বফার_ সাইজ = 16 এম
tmp_table_size = 32M
সর্বোচ্চ_হ্যাপ_সেবিকা_ আকার = 32 এম M
#
# * মাইআইএসএএম
#
# এটি স্টার্টআপ স্ক্রিপ্টটি প্রতিস্থাপন করে এবং প্রয়োজনে মাইআইএসএএম টেবিলগুলি পরীক্ষা করে
# প্রথমবার তাদের স্পর্শ করা হয়েছে। ত্রুটিতে, অনুলিপি তৈরি করুন এবং মেরামতের চেষ্টা করুন।
myisam_recover = BACKUP
key_buffer_size = 128M
# মুক্ত ফাইল-সীমা = 2000 2000
টেবিল_পেন_কাছে = 400
myisam_sort_buffer_size = 512M
সমকালীন_সামান্য = 2
read_buffer_size = 2M
read_rnd_buffer_size = 1M
#
# * ক্যোয়ারী ক্যোয়ারী ক্যোয়ারী অনুসন্ধান করুন
#
# ক্যাশে কেবলমাত্র ক্ষুদ্র ফলাফল সেট, তাই আমরা ক্যোয়ারী ক্যাশে আরও ফিট করতে পারি।
ক্যোরি_ক্যাচি_লিমিট = 128 কে
ক্যোরি_ক্যাচি_সাইজ = 64 এম
আরও নিবিড় সেটআপগুলি লেখার জন্য, ডিমান্ড বা বন্ধে সেট করুন
# ক্যোয়ারী_ ক্যাশে_ টাইপ = ডিমান্ড
#
# * লগিং এবং প্রতিলিপি
#
# উভয় অবস্থান ক্রোনজব দ্বারা আবর্তিত হয়।
# সচেতন থাকুন যে এই লগ টাইপটি একটি পারফরম্যান্স কিলার।
# 5.1 এর হিসাবে আপনি রানটাইমে লগ সক্ষম করতে পারবেন!
# জেনারাল_লগ_ফাইল = /var/log/mysql/mysql.log
# জেনারাল_লগ = 1
#
#Etc/mysql/conf.d/mysqld_safe_syslog.cnf এর কারণে লগিংয়ের সময় ত্রুটিযুক্ত লগটি syslog এ যায়।
#
# আমরা নেটওয়ার্ক ত্রুটিগুলি এবং এ জাতীয় সম্পর্কে জানতে চাই না
লগ_সুবিধা = 2
#
# বিশেষত দীর্ঘ সময়কালীন ক্যোরিগুলি দেখার জন্য ধীর ক্যোয়ারী লগ সক্ষম করুন
#slow_query_log [= {0 | 1}]
ধীর_ ক্যুরি_লগ_ফাইল = /var/log/mysql/mariadb-slow.log
দীর্ঘ_ প্রশ্ন_কাল = 10
# লগ_স্লো_রেট_লিমিট = 1000
লগ_স্লো_ভারবোসিটি = ক্যোয়ারী_প্ল্যান

# লগ-প্রশ্নের নয়-ব্যবহার-ইনডেক্স
#log_slow_admin_statements
#
# নীচেরগুলি ব্যাকআপ লগগুলি পুনরায় খেলতে বা প্রতিলিখনের জন্য সহজ হিসাবে ব্যবহার করা যেতে পারে।
# দ্রষ্টব্য: আপনি যদি একটি অনুলিপি স্লেভ সেট আপ করছেন তবে README.Debian সম্পর্কে দেখুন
আপনার অন্যান্য পরিবর্তনসমূহের প্রয়োজন হতে পারে other
# সার্ভার-আইডি = 1
# রিপোর্ট_হোস্ট = মাস্টার 1
# অটো_সামগ্রী_আপনার = 2
# অটো_সামগ্রী_অফসেট = 1
লগ_বিন = / ভার / লগ / মাইএসকিএল / মারিয়াদব-বিন
লগ_বিন_ইন্ডেক্স = /var/log/mysql/mariadb-bin.index
# পারফরম্যান্সের জন্য নয় তবে নিরাপদ sa
# সিঙ্ক_বিনলগ = 1
মেয়াদোত্তীর্ণ_ লগস_ডেস = 10
সর্বোচ্চ_বিনলগ_সাইজ = 100 এম
# দাস
# রিলে_লগ = / ভের / লগ / মাইএসকিএল / রিলে-বিন
# রিলে_লগ_ইন্ডেক্স = /var/log/mysql/relay-bin.index
# রিলে_লগ_ইনফো_ফাইল = /var/log/mysql/relay-bin.info
#log_slave_updates
#শুধুমাত্র পাঠযোগ্য
#
# অ্যাপ্লিকেশনগুলি যদি এটি সমর্থন করে তবে এই কঠোর স্কয়ার_মোড কিছুটিকে প্রতিরোধ করে
# ভুলগুলি যেমন অবৈধ তারিখগুলি সন্নিবেশ করানো ইত্যাদি
# এসকিএল_মোড = NO_ENGINE_SUBSTITUTION, ট্র্যাডিশনাল
#
# * ইনোডিবি
#
# InnoDB / var / lib / mysql / এ 10MB ডেটাফাইলে ডিফল্টরূপে সক্ষম হয়।
# আরও ইনোডিবি সম্পর্কিত বিকল্পগুলির জন্য ম্যানুয়ালটি পড়ুন। এখানে অনেক!
ডিফল্ট_ স্টোরেজ_েনজিন = ইনোডিবি
# আপনি কেবল লগ ফাইলের আকার পরিবর্তন করতে পারবেন না, বিশেষ পদ্ধতি প্রয়োজন
#innodb_log_file_size = 50M
ইনোডাব_বফার_পুল_সাইজ = 20 জি
ইনোডব_লগ_বাফলার_সাইজ = 8 এম
ইনোডব_ফাইল_পার_ টেবিল = 1
ইনোডব_পেন_ফায়ালস = 400
ইনোডব_ও_ক্যাপাসিটি = 400
ইনোডব_ফ্লুশ_মোথারোড = ও_ডিআরসিটি
#
# * নিরাপত্তা বৈশিষ্ট্য
#
# ম্যানুয়ালটিও পড়ুন, আপনি যদি ক্রুট চান!
# ক্রুট = / ভার / লিব / মাইএসকিএল /
#
# এসএসএল শংসাপত্র উত্পন্ন করার জন্য আমি ওপেনএসএসএল জিইউআই "টিনিকা" সুপারিশ করছি।
#
# এসএসএল-সিএ = / ইত্যাদি / মাইএসকিএল / কেসার্ট.পিএম
# এসএসএল- cert = / ইত্যাদি / মাইএসকিএল / সার্ভার- cert.pem
# এসএসএল-কি = / ইত্যাদি / মাইএসকিএল / সার্ভার-কী.পিএম



[Mysqldump]
দ্রুত
মূল্যউদ্ধৃতি-নাম
সর্বোচ্চ_নোলা_প্যাকেট = 16 এম

[মাইএসকিউএল]
# নো-অটো-রিহ্যাশ # মাইএসকিএল-এর দ্রুত শুরু তবে কোনও ট্যাব পরিপূর্ণতা নেই

[Isamchk]
কী_বফার = 16 এম

#
# * গুরুত্বপূর্ণ: অতিরিক্ত সেটিংস যা এই ফাইল থেকে ওভাররাইড করতে পারে!
# ফাইলগুলি অবশ্যই '.cnf' দিয়ে শেষ হওয়া উচিত, অন্যথায় সেগুলি উপেক্ষা করা হবে।
#
! অন্তর্ভুক্ত /etc/mysql/conf.d/

এবং নির্দোষ ভেরিয়েবলের বিষয়বস্তু:

মারিয়াডিবি [(কিছুই নয়)]> বৈচিত্র্যগুলি 'নির্দোষ%' পছন্দ করুন;
+ + ------------------------------------------- + + ----- ------------------- + +
| পরিবর্তনশীল_নাম | মান |
+ + ------------------------------------------- + + ----- ------------------- + +
| ইনোডব_ডাপটিভ_ফ্লাশিং | অন ​​|
| ইনোডব_আডাপটিভ_ফ্লুশিং_আলওএম | 10 |
| ইনোডব_ডাপটিভ_হ্যাশ_ইন্ডেক্স | অন ​​|
| ইনোডব_ডাপটিভ_হ্যাশ_ইন্ডেক্স_ বিভাগগুলি | 1 |
| ইনোডব_ডাপটিভ_ম্যাক্স_স্লিপ_ডলে | 150000 |
| ইনোডব_অ্যাডিশনাল_ মেম_পুল_সাইজ | 8388608 |
| ইন্নাডব_পি_বি কে_কমিট_ইন্টারওয়াল | 5 |
| ইন্নাডব_পি_ডিজিবল_লোক | বন্ধ |
| ইন্নাডব_পি_অ্যাবস্থা_বিনলগ | বন্ধ |
| ইন্নাডব_পি_অ্যাবস্থা_মডল | বন্ধ |
| ইন্নাডব_পি_আরটিএক্স_লেভেল | 0 |
| ইনোডব_আউটোএক্সটেন্ড_সনক্রিমেন্ট | 64 |
| ইন্নাডব_আউটইনক_লোক_মোড | 1 |
| ইনোডব_বফার_পুল_ডাম্প_এট_শুটডাউন | বন্ধ |
| ইনোডব_বফার_পুল_ডাম্প_নো | বন্ধ |
| ইনোডব_বফার_পুল_ফিলনাম | ইব_বফার_পুল |
| ইন্নাডব_বফার_পুল_সামান্য | 8 |
| ইন্নাডব_বফার_পুল_লোড_আবার্ট | বন্ধ |
| ইনোডব_বফার_পুল_লোড_এট_স্টার্টআপ | বন্ধ |
| ইনোডব_বফার_পুল_লোড_ এখন | বন্ধ |
| ইনোডব_বফার_পুল_পপুলেট | বন্ধ |
| ইনোডব_বফার_পুল_সাইজ | 21474836480 |
| ইনোডব_চেঞ্জ_বফার_ম্যাক্স_সাইজ | 25 |
| ইনোডব_চেঞ্জ_বফারিং | সব |
| ইনোডব_চেকসাম_ালগোরিদিম | ইন্নাডব |
| ইনোডব_চেকসামস | অন ​​|
| ইনোডব_ক্লেনার_লস্ন_এজ_ফ্যাক্টর | হাই_চেকপয়েন্ট |
| ইনোডবি_সিএমপি_অপার_আইডেক্স_এনবলড | বন্ধ |
| ইন্নাডব_কমিট_কেনক্রেন্সি | 0 |
| ইনোডব_কম্প্রেশন_ফেইলর_থার্সহোল্ড_প্যাক্ট | 5 |
| ইনোডব_কম্প্রেশন_ লেভেল | 6 |
| ইনোডব_কম্প্রেশন_প্যাড_প্যাক্ট_ম্যাক্স | 50 |
| ইনোডব_কনক্রেন্সি_টিকেটস | 5000 |
| ইন্নাডব_কর্প্ট_ টেবিল_অ্যাকশন | জোর |
| ইনোডব_ডাটা_ফিল_পাঠ | আইবডটা 1: 12 এম: অটো এক্সেট |
| ইনোডব_ডাটা_হোম_ডির | |
| ইন্নাডব_ডিজিবল_সোর্ট্ট_ফাইলে_ ক্যাশে | বন্ধ |
| ইনোডব_ডুব্লাইরাইট | অন ​​|
| ইনোডব_এম্পটি_ফ্রি_লিস্ট_ালগোরিদিম | ব্যাকঅফ |
| ইনোডব_ফেক_চেঞ্জেজ | বন্ধ |
| ইনোডব_ফেষ্ট_শুটডাউন | 1 |
| ইনোডব_ফিল_ফর্ম্যাট | মৃগী |
| ইনোডব_ফিল_ফর্ম্যাট_চেক | অন ​​|
| ইনোডব_ফাইল_ফর্ম্যাট_ম্যাক্স | মৃগী |
| ইনোডব_ফাইল_পার_ টেবিল | অন ​​|
| ইনোডব_ফ্লুশ_লগ_আট_টাইমআউট | 1 |
| ইনোডব_ফ্লুশ_লগ_এটি_আরটিএক্স_কমিট | 1 |
| ইনোডব_ফ্লুশ_মোহাদ | ও_ডির্যাক্ট |
| ইনোডব_ফ্লুশ_নিবার্স | 1 |
| ইনোডব_ফ্লুশিং_এভজি_লুপস | 30 |
| ইনোডব_ফোর্স_লোড_রংকৃত | বন্ধ |
| ইন্নাডব_ফোর্স_জ্যোতি | 0 |
| ইনোডব_ফরগ্রাউন্ড_প্রিফ্লুশ | exponential_backoff |
| ইনোডব_ফুট_উক্স_ টেবিল | |
| ইনোডব_ফুট_কেচে_ সাইজ | 8000000 |
| ইনোডব_ফুট_যোগ্য_ডায়াগ_প্রিন্ট | বন্ধ |
| ইনোডব_ফুট_যোগ্য_স্টপওয়ার্ড | অন ​​|
| ইনোডব_ফুট_ম্যাক্স_ টোকেন_ সাইজ | 84 |
| ইনোডব_ফুট_মিনি_ টোকেন_ সাইজ | 3 |
| ইনোডব_ফুট_নম_ওয়ার্ড_অপটিমাইজ | 2000 |
| ইনোডব_ফুট_সাল্ট_কেচে_লিমিট | 2000000000 |
| ইনোডব_ফুট_সার্ভার_স্টপওয়ার্ড_ টেবিল | |
| ইনোডব_ফুট_সোর্ট_পিল_ডিগ্রি | 2 |
| ইনোডব_ফুট_টোটাল_ ক্যাশে_ সাইজ | 640000000 |
| ইনোডব_ফুট_উজার_স্টপওয়ার্ড_ টেবিল | |
| ইনোডব_ও_ক্যাপাসিটি | 400 |
| ইনোডব_ও_ক্যাপাসিটি_ম্যাক্স | 2000 |
| ইনোডব_কিল_ইডল_ট্রান্সঅ্যাকশন | 0 |
| ইনোডব_লাজ_প্রিফিক্স | বন্ধ |
| ইনোডব_লোক_উইট_টাইমআউট | 50 |
| ইনোডব_লকিং_ফেক_চেঞ্জেজ | অন ​​|
| ইনোডব_লকস_অনসেফ_ফর্ম_বিন্লগ | বন্ধ |
| ইনোডব_লগ_আর_ডির | ./ |
| ইনোডব_লগ_আর_একপায়ার_সেক | 0 |
| ইনোডব_লগ_আর্কাইভ | বন্ধ |
| ইনোডব_লগ_ব্লক_সাইজ | 512 |
| ইনোডব_লগ_বাফার_সাইজ | 8388608 |
| ইনোডব_লগ_চেকসাম_ালগোরিদিম | ইনোডব |
| ইনোডব_লগ_কম্প্রেসড_পৃষ্ঠা | অন ​​|
| ইনোডব_লগ_ফাইলে_ সাইজ | 50331648 |
| ইনোডব_লগ_ফায়াল_ইন_গোষ্ঠী | 2 |
| ইনোডব_লগ_গ্রুপ_হোম_ডির | ./ |
| ইনোডব_আলরু_স্ক্যান_ডেপথ | 1024 |
| ইনোডব_ম্যাক্স_বিটম্যাপ_ফাইলে_ সাইজ | 104857600 |
| ইনোডব_ম্যাক্স_দিকিত_পৃষ্ঠা | 1000000 |
| ইনোডব_ম্যাক্স_ডাল্টি_পেজ_প্যাক্ট | 75 |
| ইন্নাডব_ম্যাক্স_ডাল্টি_পেজ_প্যাক্ট_এলডএম | 0 |
| ইনোডব_ম্যাক্স_পুরেজ_লাগ | 0 |
| ইন্নাডব_ম্যাক্স_পুরজ_লাগ_ডিলে | 0 |
| ইনোডব_মিরার্ড_লগ_গ্রুপস | 1 |
| ইনোডব_মনিটর_ডিজাবল | |
| ইনোডব_মনিটর_এনবেবল | |
| ইনোডব_মনিটর_সেট | |
| ইনোডব_মনিটর_সেটস_ল | |
| ইনোডব_ল্ড_ব্লকস_প্যাক্ট | 37 |
| ইনোডব_ল্ড_ব্লকস_টাইম | 1000 |
| ইনোডব_অনলাইন_ল্টার_লগ_ম্যাক্স_সাইজ | 134217728 |
| ইনোডব_পেন_ফায়ালস | 400 |
| ইনোডব_পোটিমাইজ_ফলেটেক্সট_অনলি | বন্ধ |
| ইনোডব_পেজ_সাইজ | 16384 |
| ইন্নাডব_প্রিন্ট_সকল_ড্যাডলকস | বন্ধ |
| ইনোডব_পুর্জ_বাচ_সাইজ | 300 |
| ইনোডব_পুর্জ_থ্রেডস | 1 |
| ইনোডব_আরন্দম_ড্রেড_হেড | বন্ধ |
| ইনোডব_ড্রেড_হেড_থ্রেশোল্ড | 56 |
| ইনোডব_ড্রেড_ও_থ্রেডস | 4 |
| ইনোডব_প্রেম_আনালি | বন্ধ |
| ইনোডব_প্রকাশ_পাদ্য | 0 |
| ইনোডব_রোলব্যাক_অন_টাইমআউট | বন্ধ |
| ইনোডব_রোলব্যাক_সেটমেন্টস | 128 |
| ইনোডব_সচেড_প্রিয়রিটি_ক্যালেনার | 19 |
| ইনোডব_শো_লোকসহেল্ড | 10 |
| ইনোডব_শো_ভারবোস_লকস | 0 |
| ইনোডব_সোর্ট_বফার_সাইজ | 1048576 |
| ইনোডব_স্পিন_ওয়াইট_ডেলা | 6 |
| ইনোডব_স্ট্যাটস_আউটো_রেক্যাল্যাক | অন ​​|
| ইনোডব_স্ট্যাটস_মোথডো | nulls_equal |
| ইনোডব_স্ট্যাটস_অন_মেডাটাটা | বন্ধ |
| ইনোডব_স্ট্যাটস_ পার্সিয়েন্ট | অন ​​|
| ইনোডব_স্ট্যাটস_সম্পর্কিত_ নমুনা_পৃষ্ঠা | 20 |
| ইনোডব_স্ট্যাটস_ নমুনা_পৃষ্ঠা | 8 |
| ইনোডব_স্ট্যাটস_ট্রান্সিয়েন্ট_ নমুনা_পৃষ্ঠা | 8 |
| ইনোডব_স্ট্যাটাস_আউটপুট | বন্ধ |
| ইনোডব_স্ট্যাটাস_আউটপুট_লকস | বন্ধ |
| ইনোডব_স্ট্রিক্ট_মোড | বন্ধ |
| ইনোডব_সুপোর্ট_এক্সা | অন ​​|
| ইনোডব_সাইক_আররে_ সাইজ | 1 |
| ইনোডব_সাইক_স্পিন_লুপস | 30 |
| ইনোডব_ টেবিল_লকস | অন ​​|
| ইনোডব_থ্রেড_কেনচার্সি | 0 |
| ইনোডব_থ্রেড_স্লিপ_ডলে | 10000 |
| ইনোডব_ট্র্যাক_চেন্জড_পৃষ্ঠা | বন্ধ |
| ইনোডব_উন্ডো_ ডিরেক্টরি | । |
| ইনোডব_উন্ডো_লগস | 128 |
| ইনোডব_উন্ডো_ টেবিলস্পেসেস | 0 |
| ইনোডব_ইউজ_ট্যাটমিক_ রাইটস | বন্ধ |
| ইনোডব_ ইউজ_ফোলোকট | বন্ধ |
| ইনোডব_উজ_গ্লোবাল_ফ্লুশ_লগ_এট_আরটিএক্স_কমিট | অন ​​|
| ইনোডব_ইউজ_নেটিভ_আইও | অন ​​|
| ইনোডব_উস_স্ট্যাকট্রেস | বন্ধ |
| ইনোডব_উস_সিস_ম্লোক | অন ​​|
| ইনোডব_ভার্সন | 5.6.17-65.0 |
| ইনোডব_রাইট_আইও_থ্রেডস | 4 |
+ + ------------------------------------------- + + ----- ------------------- + +
143 সারি সেট (0.02 সেকেন্ড)

মেশিনের কোর সংখ্যা 8, এটি একটি

Intel(R) Xeon(R) CPU E3-1246 v3 @ 3.50GHz হিসাবে /proc/cpuinfo

একটি সর্বশেষ নোট: রোল্যান্ডোএমওয়াইএসকিউএলডিবিএর প্রস্তাবিত সূচীগুলি দিয়ে প্রশ্নগুলি চালাও, এবং অনুসন্ধানগুলি প্রতিটি প্রায় 11-20s নিয়েছিল। আমি এটি উল্লেখ করতে চাই না যে এটি আমার পক্ষে অত্যন্ত গুরুত্বপূর্ণ (এটি একটি বুলেটিন বোর্ডের মূল টেবিল) যে থ্রেডিড সম্পর্কে প্রথম ক্যোয়ারী এক সেকেন্ডেরও কম সময়ে ফিরে আসে, কারণ এখানে প্রায় 60.000 এরও বেশি থ্রেড এবং গুগল-বট ক্রমাগত ক্রল হয় এই থ্রেড।


মন্তব্যগুলি বর্ধিত আলোচনার জন্য নয়; এই কথোপকথন চ্যাটে সরানো হয়েছে ।
পল হোয়াইট GoFundMonica বলেছেন

উত্তর:


24

আপনার প্রশ্ন

SELECT post.postid, post.attach FROM newbb_innopost AS post WHERE post.threadid = 51506;

প্রথম নজরে, এই ক্যোয়ারীটি কেবল সারণির 1.1597% (5390146 এর মধ্যে 62510) স্পর্শ করবে। এটি থ্রেডিড 51506 এর মূল বিতরণ দেওয়া উচিত।

বাস্তবতা পরীক্ষা

আপনি মাইএসকিউএল এর কোন সংস্করণ (ওরাকল, পারকোনা, মারিয়াডিবি) ব্যবহার করেন না কেন, এগুলির মধ্যে যে কোনও একটিই শত্রুর সাথে লড়াই করতে পারে না যার সব মিল রয়েছে: দ্য ইনোডিবি আর্কিটেকচার।

InnoDB আর্কিটেকচার

ক্লাস্টার্ড সূচক

দয়া করে মনে রাখবেন যে প্রতিটি থ্রেডইড এন্ট্রিতে একটি প্রাথমিক কী যুক্ত থাকে। এর অর্থ হ'ল আপনি যখন সূচকটি থেকে পঠন করবেন তখন এটি অবশ্যই ক্লাস্টারডিনডেক্সের অভ্যন্তরীণভাবে ( প্রাথমিকভাবে জেন_ ক্লাস্ট_ইন্ডেক্স নামকরণ করা) প্রাইমারি কী লকউইচ করতে হবে । ক্লাস্টারআইডেক্সে, প্রতিটি ইনোডিবি পৃষ্ঠায় ডেটা এবং প্রাথমিক মূল সূচি তথ্য উভয়ই থাকে। আরও তথ্যের জন্য আমার পোস্ট সেরা মাইআইএসএএম এবং ইনোডিবি দেখুন।

পুনর্নির্মাণ সূচকগুলি

আপনার টেবিলে প্রচুর গোলমাল রয়েছে কারণ কিছু সূচীতে একই লিডিং কলাম রয়েছে। মাইএসকিউএল এবং ইনোডিবিতে প্রয়োজনীয় বিটিআরই নোডগুলি পেতে সূচি বিশৃঙ্খলার মাধ্যমে নেভিগেট করতে হবে। নিম্নলিখিত চালনা করে আপনার এই বিশৃঙ্খলা হ্রাস করা উচিত:

ALTER TABLE newbb_innopost
    DROP INDEX threadid,
    DROP INDEX threadid_2,
    DROP INDEX threadid_visible_dateline,
    ADD INDEX threadid_visible_dateline_index (`threadid`,`visible`,`dateline`,`userid`)
;

কেন এই সূচকগুলি বাদ দিন?

  • প্রথম তিনটি সূচক থ্রেডাইড দিয়ে শুরু হয়
  • threadid_2এবং threadid_visible_datelineএকই তিনটি কলাম দিয়ে শুরু করুন
  • threadid_visible_dateline এটি প্রাথমিক কী এবং এটি এমবেডেড হওয়ায় পোষ্টিডের দরকার নেই

বুফার ক্যাচিং

InnoDB বাফার পুল ডেটা এবং সূচী পৃষ্ঠাগুলি ক্যাশে করে। মাইআইএসএএম কেবল সূচী পৃষ্ঠাগুলি ক্যাশে করে।

কেবল এই অঞ্চলে, মাইআইএসএএম ডেটা ক্যাশে করার সময় নষ্ট করে না। কারণ এটি ডেটা ক্যাশে করার জন্য ডিজাইন করা হয়নি। InnoDB প্রতিটি ডেটা পৃষ্ঠা এবং সূচী পৃষ্ঠাকে (এবং এর দাদী) এটি স্পর্শ করে। যদি আপনার ইনোডিবি বাফার পুলটি খুব ছোট হয় তবে আপনি পৃষ্ঠাগুলি ক্যাশে করতে, পৃষ্ঠাগুলিকে অবৈধ করতে এবং একটি ক্যোয়ারীতে সমস্ত পৃষ্ঠা সরিয়ে ফেলতে পারেন।

টেবিল লেআউট

আপনি সারি থেকে কিছু জায়গা শেভ করতে পারেন importthreadidএবং বিবেচনা করে importpostid। এগুলি আপনার কাছে বিজিআইএনটিস হিসাবে রয়েছে। তারা প্রতি সারি ক্লাস্টার ইনডেক্সে 16 বাইট নেয়।

আপনার এটি চালানো উচিত

SELECT importthreadid,importpostid FROM newbb_innopost PROCEDURE ANALYSE();

প্রদত্ত ডেটাসেটের জন্য এই কলামগুলি কী ধরনের ডেটা হওয়া উচিত তা এটি সুপারিশ করবে।

উপসংহার

মাইআইএসএএম-র সাথে ইনোএনডিবি-র তুলনায় অনেক কম লড়াই রয়েছে, বিশেষত ক্যাচিংয়ের ক্ষেত্রে।

আপনি যখন র‌্যামের পরিমাণ ( 32GB) এবং মাইএসকিউএল ( Server version: 10.0.12-MariaDB-1~trusty-wsrep-log mariadb.org binary distribution, wsrep_25.10.r4002) এর সংস্করণ প্রকাশ করেছেন তখন এই ধাঁধাটির আরও কিছু টুকরো রয়েছে যা আপনি প্রকাশ করেননি

  • InnoDB সেটিংস
  • কোর সংখ্যা
  • থেকে অন্যান্য সেটিংস my.cnf

আপনি যদি প্রশ্নগুলিতে এই জিনিসগুলি যুক্ত করতে পারেন তবে আমি আরও বিশদভাবে বলতে পারি।

আপডেট 2014-08-28 11:27 ইডিটি

আপনার থ্রেডিং বৃদ্ধি করা উচিত

innodb_read_io_threads = 64
innodb_write_io_threads = 16
innodb_log_buffer_size = 256M

আমি ক্যোয়ারী ক্যাশে অক্ষম করার বিষয়টি বিবেচনা করব (আমার সাম্প্রতিক পোস্টটি দেখুন কেন MySQL 5.6 থেকে ডিফল্ট সূচনা দিয়ে ক্যোয়ারী_ক্যাচি_ টাইপ অক্ষম করা আছে? )

query_cache_size = 0

আমি বাফার পুল সংরক্ষণ করব

innodb_buffer_pool_dump_at_shutdown=1
innodb_buffer_pool_load_at_startup=1

শুদ্ধ থ্রেড বৃদ্ধি করুন (আপনি যদি একাধিক টেবিলগুলিতে ডিএমএল করেন)

innodb_purge_threads = 4

একবার চেষ্টা করে দেখো !!!


আমি জানি যে ইনোডিবি বোঝানো হচ্ছে খাঁটি গতির পরীক্ষায় ধীর হওয়া, তবে কি এই পরিমাণে? আমি পড়েছি যে মাইএসকিউএল টিম এই ফাঁকটি বন্ধ করার জন্য কঠোর প্রচেষ্টা করছে। আমরা এখনও fold 100 গুন বৃদ্ধি নিয়ে কাজ করছি! প্রশ্ন - আপনি কি বলছেন যে এই প্রকৃতির প্রশ্নগুলি "সরাসরি" নন-ক্লাস্টারযুক্ত বি-ট্রি ইনডেক্স (যেমন পিকে ডেটা অন্তর্ভুক্ত না করে) দিয়ে আরও ভাল পরিবেশন করা হবে? যদি তা হয় তবে কেন / এটি প্রয়োগ করা হয়নি / করা হচ্ছে না? ওপি প্রয়োজনীয় কার্যকারিতা অবশ্যই প্রান্তিক ব্যবহারের ক্ষেত্রে নয়।
ভেরেস

আপনি কি সেই ছবিটির পুরো আকারের সংস্করণে একটি লিঙ্ক যুক্ত করতে পারেন? কিছু অংশগুলি পড়া কঠিন :-)
জলরাশ

@ রোল্যান্ডমাইএসকিউএলডিবিএ তথ্যের জন্য ধন্যবাদ - আমি আশা করি আপনি প্রস্তাব দিচ্ছেন না যে ইনোনডিবি-র জন্য 100x মন্থরতা "স্বাভাবিক" ... আমি 2x বা 3x দিয়ে বাঁচতে পারি, তবে 100x কেবল খুব বেশি। অনুরোধ হিসাবে আমি আমার প্রশ্নের অনুপস্থিত তথ্য যুক্ত করেছি :) এখনও পর্যন্ত ব্যাখ্যাগুলির জন্য ধন্যবাদ! মেশিনের
কোরগুলির

2
@ ওয়াটারি এখানে পূর্ণ আকারের চিত্র: scribd.com/doc/31337494/XtraDB-InnoDB-internals-in-drawing
RolandoMySQLDBA

1
আপনার রোল্যান্ডোমাইএসকিউএলডিবিএর সহায়তার জন্য অনেক ধন্যবাদ, দুর্ভাগ্যক্রমে এমনকি শেষের টুইটগুলিও সাহায্য করেনি এবং InnoDB প্রায় 11-20 সেকেন্ড পুরোপুরি সময় নেয়। আমি আপনার উত্তরের উপর ভিত্তি করে কিছু চেষ্টা করেছি - সমস্ত সূচী বাদ দেওয়া এবং একটি আচ্ছাদন সূচক তৈরি করা। এটি অনেক সাহায্য করেছে। আপনার সূচকগুলির ব্যাখ্যা ব্যতীত আমি এই সমাধানটি পেতাম না। আপনার উত্তর যাচাই করতে যাচ্ছি এবং নিজেই একটি উত্তর
লিখেছিলাম

7

@ রোল্যান্ডমাইএসকিউএলডিবিএ প্রশ্নের উত্তর দেওয়ার জন্য সঠিক ইঙ্গিত দিয়েছে। সমস্যাটি কোয়েরিতে থাকা বলে মনে হচ্ছে এবং ফলাফলগুলি ফেরত দেওয়ার জন্য, সেই ক্ষেত্রগুলির প্রত্যেকটিই পড়তে হবে (কোনওভাবে ডাটাবেস থেকে)।

আমি বাদে সমস্ত সূচক বাদ দিয়েছি PRIMARY KEYএবং এই নতুন সূচকটি sertedোকিয়েছি:

ALTER TABLE newbb_innopost ADD INDEX threadid_visible_dateline_index (threadid,visible,dateline,userid,attach,ipaddress);

এই লিঙ্কটি এখানে কী ঘটে তা ব্যাখ্যা করে ( কভারেজ সূচক ): কোয়েরির অনুসন্ধান ক্ষেত্রগুলি যাpostid,attach এখন কী থেকে তৈরি করা যেতে পারে। এটি আসল ডেটা পরীক্ষা করে এবং হার্ড ডিস্কে আই / ও ব্যবহার করে সংরক্ষণ করে।

সমস্ত প্রশ্নের এখন 0.00 সেকেন্ড দিয়ে চালানো .. :)

আপনার সহায়তার জন্য অনেক ধন্যবাদ।

সম্পাদনা করুন : প্রকৃত অন্তর্নিহিত সমস্যাটি সমাধান করা হয়নি, আমি কেবল এই কৌশলটি দিয়ে এটিকে ছড়িয়ে দিয়েছি। InnoDB এই অঞ্চলে কিছু গুরুতর ফিক্সিং প্রয়োজন।


আমি একই সমস্যা সম্মুখীন। মায়িসমা ক্যোরিয়ায় 0.01 সেকেন্ড সময় লাগে যখন ইনোডাব 60 সেকেন্ড সময় নেয়, আপনার পরামর্শগুলি চেষ্টা করবে।
এএমবি

@ এএমবি - 0.01 গুলি কোয়েরি ক্যাশের মতো গন্ধ পেয়েছে; সময় দিয়ে আবার SQL_NO_CACHE
রিক জেমস

0

আপনার ক্যোয়ারী এবং সারণী উভয়ের উপর ভিত্তি করে মনে হচ্ছে আপনি সময়-সিরিজের সারণী থেকে ডেটা সেলিক্টিক্যাগ। যেমন, এটি হতে পারে যে আপনি একই সাথে সন্নিবেশ করানোর কারণে ক্যোয়ারির সময়টি ধীর?

যদি এই দুটি জিনিস সত্য হয় তবে আমি বিকল্প হিসাবে স্কেলডিবিতে সন্ধান করার পরামর্শ দেব? আপনি এখনও মারিয়াডিবিতে থাকবেন, কেবলমাত্র (সম্ভবত) আরও উপযুক্ত ইঞ্জিন।

http://www.scaledb.com - হোমপেজ http://www.scaledb.com/download-form.php - আমাদের পণ্য


2
আপনার যুক্ত করা উচিত যে প্রধান সংস্করণটি নিখরচায় নয়।
ypercubeᵀᴹ

0

উভয় ইঞ্জিনই ক্যোয়ারীটি আরও দ্রুত চালাবে

INDEX(threadid, attach, postid)

এটি কারণ এটি একটি "আচ্ছাদন" সূচক হবে এবং কার্যত একইভাবে (সূচি বিটি ট্রি ব্যবহার করে) পরিচালনা করবে।

এছাড়াও, আমি বলব যে এই আমার পক্ষে সম্ভব নয় পারেন একটি "ঠান্ডা" সার্ভারে ইঞ্জিন:

62510 rows in set (0.13 sec)

দয়া করে SQL_NO_CACHEযখনই চলমান সময় ব্যবহার করুন - আমরা চাই না ক্যোয়ারী ক্যাশে সিদ্ধান্তগুলি দূষিত করে।

আরেকটি দ্রুত পদ্ধতির (আই / ও ক্যাশে নির্বিশেষে):

InnoDB ব্যবহার করুন এবং এ থেকে পরিবর্তন PRIMARY KEY (postid)করুন

PRIMARY KEY(threadid, postid),
INDEX(postid)

কারণটি হ'ল এটির ফলে সমস্ত প্রাসঙ্গিক সারি সংলগ্ন হবে, যার ফলে কম I / O প্রয়োজন INDEX(postid)হবে ইত্যাদি AUTO_INCREMENTখুশি রাখা is ক্যাভ্যাট: এটি সমস্ত গৌণ কীগুলির সাথে মেসেজ করে - কিছুগুলি দ্রুত হবে, কিছু ধীরে ধীরে হবে।


0

যদিও @ জোলিরোজারের কাছে সরাসরি প্রযোজ্য নয় কারণ তার ইতিমধ্যে সঠিক সেটিং রয়েছে তবে আমি innodb_buffer_pool_sizeআমার র্যামের to০ % র পরিবর্তন করে একটি বড় উন্নতি পেয়েছি কেন ইনোডাবের চেয়ে মাইসাম আস্তে আস্তে আছে

প্রথম MyISAMধীর ছিল, কিন্তু ওকে। তারপরে InnoDBজিনিসগুলি খারাপ করা হয়েছে, এই প্রশ্নের 100x ধীরের মত এবং সেটিংস পরিবর্তন করার পরে InnoDB10x দ্রুত পেয়েছে MyISAM

আমার ডিফল্ট সেটিংটি 8MB এ ছিল যা খুব কম।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.