ডাব্লুপিপোস্টমেটার "_ডিট_লক" এর সাধারণ আপডেটগুলি এত ধীর কেন?


11

আমাদের মাইএসকিউএল স্লো ক্যোয়ারী লগের মধ্যে, সম্মিলিতভাবে ধীরতম কোয়েরিটি ডাব্লুপি_পোস্টমেটাতে একটি সাধারণ আপডেট। এখানে একটি উদাহরণ:

UPDATE `wp_postmeta`
  SET `meta_value` = '1392835505:386'
  WHERE `post_id` = 94705 AND `meta_key` = '_edit_lock';

আমাদের সেটআপ সম্পর্কিত প্রাসঙ্গিক বিবরণ:

  • মাইএসকিউএল স্লো ক্যোয়ারির সময় 1 এস এ সেট করেছে
  • ডাব্লুপি_পোস্টমেটার স্টোরেজ ইঞ্জিনটি ইনোডিবি
  • মূল ডাব্লুপি ব্লগে কয়েক হাজার পোস্ট সহ একটি বৃহত্তর মাল্টিসাইট স্থাপনের মধ্যে চলছে (যেখানে এই ধীর অনুসন্ধানগুলি হচ্ছে)
  • ডব্লিউপি অ্যাডমিন অঞ্চলে উচ্চ ক্রিয়াকলাপ (প্রচুর লেখক / সম্পাদক একযোগে কাজ করছেন, তবে সাধারণত তাদের নিজস্ব (অন্যদের নয়) সামগ্রীতে)
  • ডব্লিউপি এর সর্বজনীন পক্ষে নিম্ন ক্রিয়াকলাপ (মূল ব্লগ থেকে সামগ্রী সরবরাহ করা নয়)
  • ধীর অনুসন্ধানগুলি সকলকে "_ডিট_লক" কী ব্যবহার করছে বলে মনে হচ্ছে; একই বিন্যাসের ক্যোয়ারী (যা "_edit_lock" ব্যতীত অন্য কোনও কী ব্যবহার করে) মনে হয় না ধীর।

কেন এটি আমাদের সিস্টেমে সবচেয়ে ধীরতম ক্যোয়ারী? ডাব্লুপি-র নির্দিষ্ট "সম্পাদনা লকগুলি" ব্যবহারের সাথে কি এর কিছু যুক্ত রয়েছে?

ধন্যবাদ! :)


আপডেট: নীচে মাইএসকিএসএসএ থেকে আউটপুট:

______________________________________________________________________ 001 ___
Count         : 606  (16.83%)
Time          : 2257.760468 s total, 3.725677 s avg, 1.00512 s to 84.645869 s max  (20.60%)
  95% of Time : 1355.289277 s total, 2.357025 s avg, 1.00512 s to 12.343604 s max
Lock Time (s) : 182.502 ms total, 301 μs avg, 29 μs to 157.542 ms max  (0.21%)
  95% of Lock : 22.882 ms total, 40 μs avg, 29 μs to 57 μs max
Rows sent     : 0 avg, 0 to 0 max  (0.00%)
Rows examined : 1 avg, 1 to 2 max  (0.00%)
Database      : xxx_wp
Users         :
        xxx_wp@localhost  : 98.84% (599) of query, 51.03% (1837) of all users
        yyy_wp@localhost  : 1.16% (7) of query, 0.94% (34) of all users

Query abstract:
SET timestamp=N; UPDATE wp_postmeta SET meta_value = 'S' WHERE post_id = N AND meta_key = 'S';

Query sample:
SET timestamp=1392835506;
UPDATE `wp_postmeta` SET `meta_value` = '1392835505:386' WHERE `post_id` = 94705 AND `meta_key` = '_edit_lock';

আপনি কত ফলাফলের জন্য পান SELECT * FROM wp_postmeta WHERE meta_key='_edit_lock'; ?
adrian7

আপনার প্রশ্নের জন্য ধন্যবাদ, অ্যাড্রিয়ান 7! আপনার ক্যোয়ারীর সাথে মিলছে 33k সারি রয়েছে। আমি ডাব্লুপি'এর '_ডিট_লক' মেটা কী ব্যবহারের সাথে পরিচিত নই। এটি কি অস্বাভাবিক?
রিনোগো

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

3
আপনি কেবল SELECTএই প্রবেশের সময়ও কি প্রচুর সময় নেয় ? SELECT * FROM Wp_postmeta` এর মতো WHERE post_id= 94705 এবং meta_key= '_ডিট_লক'; `?
ফিশচি

@ ফিশচি: এই ক্যোয়ারীটি 45-50 মিমি থেকে নেওয়া বলে মনে হচ্ছে, কমপক্ষে কয়েক মুহুর্ত আগে আমি পরীক্ষায় করেছি। যাইহোক, এটি সম্ভব যে এটি মাঝে মধ্যে খুব দীর্ঘ সময় নিতে পারে (উদাহরণস্বরূপ প্রশ্নটিতে অন্তর্ভুক্ত থাকা মাইকিএসএলস্লা আউটপুটে প্রদর্শিত হিসাবে) 84৪ সেকেন্ড পর্যন্ত। আমার কনফিগারেশনে আমার সাম্প্রতিক কোনও পরিবর্তনগুলি কোয়েরিকে প্রভাবিত করেছে কিনা তা দেখার জন্য আমি ধীরে ধীরে ক্যোয়ারী বিশ্লেষণের একটি নতুন রাউন্ড চালাব।
রিনোগো

উত্তর:


3

আপনি যখনই কোনও পোস্ট বা পৃষ্ঠা সম্পাদনা করেন তখন _ইডিট_লক তৈরি হয়। এটিতে টাইমকোড এবং ব্যবহারকারী রয়েছে। সুতরাং ওয়ার্ডপ্রেস বর্তমানে এটি সম্পাদনা করছে তা জানে।

meta_id     post_id     meta_key    meta_value
9           5           _edit_lock  1388386997:1

আপনি যদি এটি ব্যবহার করেন তবে ওয়ার্ডপ্রেস কোনওরকম সংবেদনশীল প্রতিক্রিয়া দেখায় ... আমি কোনও পোস্টে কেউ কত সেকেন্ড কাজ করেছে তা আমি আনার চেষ্টা করেছি। সমস্ত সময় এটি আমার ডাটাবেস লোডিং সময় ভেঙে দেয়।

যেমন আপনি বলেছিলেন আপনি এটি একটি বৃহত মাল্টিসাইটে চালাচ্ছেন। কয়জন ব্যবহারকারী সেখানে পোস্ট লেখেন তা জানেন না, তবে একই সাথে সার্ভারের র‌্যাম ভেঙে দিতে পারে যদি বহু লোক একই সাথে একটি পোস্ট সম্পাদনা করে।

একটি সমাধান হতে পারে: _ডিট_লক থেকে মুক্তি পান

কীভাবে "পোস্ট লক / সম্পাদনা লক" অক্ষম করবেন?

সাধারণত ওয়ার্ডপ্রেসের প্রতি পোস্টে "_edit_lock" থাকা উচিত। কিছু ডাটাবেসে প্রতিবার সেগুলি তৈরি করতে সমস্যা হয়।

এই লোক ভালো লেগেছে http://wordpress.org/support/topic/can-i-remove-_edit_lock-_edit_last-from-wp_postmeta

তাঁর সমাধানটি ছিল তাদের সমস্ত মুছে ফেলা। এটির গতি বাড়ানোর জন্য আপনি পিএইচপিএমআইএডমিনের সাথে প্রতি রাতে 3 টা বাজে এগুলি মুছতে পারেন

DELETE FROM `yourdb`.`wp_postmeta` WHERE `wp_postmeta`.`meta_key` = '_edit_lock'

আপনি ক্রোন কাজ ঠিক যে কাজ খুঁজে পেতে পারে।


0

এটা চেষ্টা কর :)

UPDATE `wp_postmeta` 
    SET `meta_value` = concat(unix_timestamp(),':386')  
    WHERE `post_id`  = 94705 
      AND `meta_key` = '_edit_lock';
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.