প্রতিদিন মাইএসকিউএল কোয়েরিগুলি কীভাবে নির্ধারণ করবেন?


15

আমি মাইএসকিউএল থেকে কোনও নুএসকিউএল ডি বিএএস-তে বড় স্যুইচটি তদন্ত করছি এবং ব্যয়ের পূর্বাভাস দেওয়ার চেষ্টা করে একটি সমস্যা নিয়ে এসেছি। মূলত, আমি চিন্তা করতে পারে না প্রতি দিন আমার বর্তমান মাইএসকিউএল সার্ভার হ্যান্ডলগুলি চেষ্টা করুন এবং অনুরোধের সংখ্যা আমি ব্যবহার করছি অনুমান করার জন্য কত প্রশ্নের Cloudant , যা প্রতি 100 রাখে, পোস্ট, এবং মুছে ফেলে $ 0.015 এবং প্রতি 500 পরার $ 0.015 চার্জ এবং হেডস

আমি ব্যবহার সম্পর্কে তথ্য অনেক পেয়েছি স্থিতি দেখান এবং দেখান গ্লোবাল স্থিতি যে মাইএসকিউএল নিজেই সংগ্রহ পরিসংখ্যান পেতে, কিন্তু কোন সময়সীমার রেফারেন্স আছে।

উদাহরণস্বরূপ, গ্লোবাল পরিস্থিতিগুলি নিম্নলিখিতগুলি দেখায়:

Queries                           | 13576675

কোনটি দুর্দান্ত, তা ছাড়া এই সংখ্যাটি মোড়ানো টাইমফ্রেমের আমার কোনও ধারণা নেই। ১৩ কোটির কোয়েরি কবে? প্রতি মাসে? বছর? সময়ের শুরু থেকেই?

মাইএসকিউএল ডক্স সত্যিই খুব বেশি বিস্তৃত হয় না:

ক্যোয়ারী

সার্ভার দ্বারা চালিত বিবৃতিগুলির সংখ্যা। এই পরিবর্তনশীলটি প্রশ্নাবাদের ভেরিয়েবলের বিপরীতে সঞ্চিত প্রোগ্রামগুলির মধ্যে সম্পাদিত বিবৃতি অন্তর্ভুক্ত করে। এটি COM_PING বা COM_STATISTICS আদেশগুলি গণনা করে না। এই পরিবর্তনশীলটি মাইএসকিউএল 5.0.76 এ যুক্ত হয়েছিল।

কোনো সাহায্যের জন্য আগাম ধন্যবাদ।


2
Queriesবিশ্বব্যাপী অবস্থা পরিবর্তনশীল সবকিছু যেহেতু সার্ভার গত শুরু হয়েছিল ... যা ছিল গণনা করা হয় SHOW STATUS LIKE 'Uptime';সেকেন্ড আগে। অনেকগুলি স্ট্যাটাস ভেরিয়েবলগুলি সাফ হয়ে গেছে FLUSH STATUS;তবে Queriesতা নয়, অন্তত পরীক্ষার সার্ভারগুলিতে আমি এখনই এটি নিশ্চিত করেছিলাম, যা মাইএসকিউএল 5.5.19 এবং 5.6.14 ছিল।
মাইকেল - স্ক্যালবট

উত্তর:


15

নির্বাচনের জন্য:

show global status like "Com_select";

আপডেট:

show global status like "Com_update";

টিপে:

show global status like "Com_insert";

মুছে ফেলে:

show global status like "Com_delete";

মাইএসকিউএল শেষ পুনরায় আরম্ভ করার পরে সমস্ত মানগুলি "কুমুলিটিভ"।

সুতরাং এক ঘন্টা মধ্যে আপনার নির্বাচন পেতে:

রাত ৯ টায়:

[21:00:00] [DEV\(none)] mysql> show global status like "Com_select";
+---------------+--------+
| Variable_name | Value  |
+---------------+--------+
| Com_select    | 671664 |
+---------------+--------+
1 row in set (0.00 sec)

রাত ১০ টায়:

[22:00:00] [DEV\(none)] mysql> show global status like "Com_select";
+---------------+--------+
| Variable_name | Value  |
+---------------+--------+
| Com_select    | 672363 |
+---------------+--------+
1 row in set (0.00 sec)

গত ঘন্টা বাছাইয়ের সংখ্যা: 672363 - 671664 = 699

শুভেচ্ছান্তে


ধন্যবাদ @ এমফৌইলুল, এটি সহায়ক। আমি এটির সময়কালের সাথে একত্রিত করতে যাচ্ছি এবং প্রশ্নের পরিমাণগুলি বের করব।
এজেবি

1
শুধু পরিষ্কার করার জন্য, show global status like 'Com_%';কমান্ডগুলি পুরো সার্ভারের জন্য, তাই না? একটি ভাগ করা পরিবেশে বিকল্প কী হবে - উদাহরণস্বরূপ: max_questionsপ্রতি ঘন্টা / কিউএইচ (কিউপিএইচ) আঘাত হানে আমরা / সর্বাধিক কোয়েরিজ থেকে কতটা দূরে রয়েছি তা অনুমান করতে ।
ফ্যাবিয়েন স্নোওয়ার্ট

9

আমি এই ভিউটি প্রতি সেকেন্ড, মিনিট, ঘন্টা এবং দিন প্রতি প্রশ্নের সংখ্যার উপর নজর রাখতে ব্যবহার করি:

create or replace view _dba_query_stats as
select 
  SUBSTRING(VARIABLE_NAME, 5) as query_type, 
  VARIABLE_VALUE as total_count, 
  round(VARIABLE_VALUE / ( select VARIABLE_VALUE from information_schema.GLOBAL_STATUS where VARIABLE_NAME = 'Uptime_since_flush_status'), 2) as per_second,
  round(VARIABLE_VALUE / ((select VARIABLE_VALUE from information_schema.GLOBAL_STATUS where VARIABLE_NAME = 'Uptime_since_flush_status') / (60)))       as per_minute,
  round(VARIABLE_VALUE / ((select VARIABLE_VALUE from information_schema.GLOBAL_STATUS where VARIABLE_NAME = 'Uptime_since_flush_status') / (60*60)))    as per_hour, 
  round(VARIABLE_VALUE / ((select VARIABLE_VALUE from information_schema.GLOBAL_STATUS where VARIABLE_NAME = 'Uptime_since_flush_status') / (60*60*24))) as per_day,
  FROM_UNIXTIME(round(UNIX_TIMESTAMP(sysdate()) - (select VARIABLE_VALUE from information_schema.GLOBAL_STATUS where VARIABLE_NAME = 'Uptime_since_flush_status'))) report_period_start,
  sysdate() as report_period_end,
  TIME_FORMAT(SEC_TO_TIME((select VARIABLE_VALUE from information_schema.GLOBAL_STATUS where VARIABLE_NAME = 'Uptime_since_flush_status')),'%Hh %im') as report_period_duration
from 
  information_schema.GLOBAL_STATUS 
where 
  VARIABLE_NAME in ('Com_select', 'Com_delete', 'Com_update', 'Com_insert');

নমুনা আউটপুট:

query_type total_count per_second per_minute per_hour per_day report_period_start report_period_end   report_period_duration
DELETE               0          0          0       0        0 2017-04-16 03:46    2017-04-20 22:14:56 114h 28m
INSERT           36595       0.09          5     320     7672 2017-04-16 03:46    2017-04-20 22:14:56 114h 28m
SELECT        14842019      36.02       2161  129656  3111738 2017-04-16 03:46    2017-04-20 22:14:56 114h 28m
UPDATE          189137       0.46         28    1652    39654 2017-04-16 03:46    2017-04-20 22:14:56 114h 28m
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.