মাইএসকিউএলে সূচকের আকার কীভাবে নির্ধারণ করা যায়


88

আমি আমার সূচির আকার নির্ধারণ করতে চাই, সেগুলি হ'ল প্রাথমিক কী সূচক। এটি মাইএসকিএল ক্লাস্টারে থাকতে পারে তবে আমি তা তাত্পর্যপূর্ণ বলে মনে করি না।

উত্তর:


100

আমি মনে করি এটিই আপনি খুঁজছেন।

show table status from [dbname]

http://dev.mysql.com/doc/refman/5.1/en/show-table-status.html


4
গড়_মোহু দৈর্ঘ্য, ডেটা_ দৈর্ঘ্য, সর্বোচ্চ_ডাটা_ দৈর্ঘ্য, সূচক_ দৈর্ঘ্য, ডেটা_ফ্রি সবই বাইটে রিপোর্ট করা হয়েছে, হ্যাঁ।
লুক রেহমান

23
এটি মোট সূচকের আকার দেয় , প্রতি সূচকের আকার নয় (ধরে নেওয়া যে কোনও সারণীতে একাধিক সূচক রয়েছে)।
সাই

76

বাজ্ক হার্মেক্সের উত্তর বাড়ানো হচ্ছে।
আপনি মাইক্রোসফ্টের ভিত্তিতে প্রাইমারী (যা টেবিল নিজেই থাকে) ছাড়াই মেগাবাইটে সমস্ত সূচক আকার পেতে পারেন।

SELECT database_name, table_name, index_name,
ROUND(stat_value * @@innodb_page_size / 1024 / 1024, 2) size_in_mb
FROM mysql.innodb_index_stats
WHERE stat_name = 'size' AND index_name != 'PRIMARY'
ORDER BY size_in_mb DESC;

4
কেন অর্ডার 4?
অ্যালেক্স

4
@ অ্যালেক্স তাই এটি 4 র্থ ক্ষেত্রের দ্বারা আদেশ দেয় যা আকার। অর্থাত্ প্রথম বৃহত্তম টেবিলটি দেখান,
ড্যানিয়েল জোহর

4
না এটি সহজভাবে ভাল ব্যবহার করা: ORDER BY size_in_mb DESC;?
নেভারইন্ডিংকিউ

4
@ নেভারএন্ডিংকিউ এটি স্টাইলের বিষয় কিছুটা হলেও আমি দেখতে পাচ্ছি যে এই ক্ষেত্রে এটি আরও পাঠযোগ্য কীভাবে হবে। আমি উত্তরটি সংশোধন করেছি এবং আপনার পরামর্শ অনুসারে এটি এখন পড়বে।
ড্যানিয়েল জোহর

42

আপনি যদি InnoDB টেবিল ব্যবহার করছেন তবে আপনি পৃথক সূচী থেকে আকারটি পেতে পারেন mysql.innodb_index_stats। 'আকার' স্ট্যাটে পৃষ্ঠাগুলিতে উত্তর রয়েছে, সুতরাং আপনাকে এটি পৃষ্ঠা-আকার দ্বারা গুণ করতে হবে, যা ডিফল্টরূপে 16 কে

select database_name, table_name, index_name, stat_value*@@innodb_page_size
from mysql.innodb_index_stats where stat_name='size';

4
কল্পনাপ্রসূত। ঠিক আমি খুঁজছেন ছিল কি!
ডেভ মার্টোরানা

4
স্পষ্ট করার জন্য: এই ক্যোয়ারির stat_valueসাহায্যে পৃষ্ঠাটি আকার দ্বারা ইতিমধ্যে গুণ করা হয়েছে, সুতরাং কলামটি বাইটগুলিতে সূচক আকার দেয়।
বেনেডিক্ট কেপেল

4
ধন্যবাদ, গৃহীত উত্তরের চেয়ে অনেক ভাল। আমার মতো অন্যান্য নুবগুলির জন্য একটি নোট - ডাটাবেস_নাম, টেবিলের নাম এবং সূচক_নাম আপনার আসল ডাটাবেসের নাম এবং টেবিলের নামের সাথে প্রতিস্থাপন করা হবে না;) পরিবর্তে কমান্ডটি ঠিক যেমন ব্যবহার করা উচিত।
লুবেন

আমার ক্ষেত্রে এটি প্রতিবেদন করা থেকে একটি খুব আলাদা (এবং অবাস্তব) আকার দিয়েছেshow table status from [dbname]
আর্কিটেকোনিক

6

চালু আছে MyISAM, প্রতিটি সূচক ব্লক 4 KBপৃষ্ঠা fill_factorসূচক রেকর্ডে পূর্ণ , প্রতিটি key length + 4বাইট দীর্ঘ।

Fill factor সাধারণত 2/3

হিসাবে InnoDB, টেবিল সর্বদা উপর ক্লাস্টার করা হয় PRIMARY KEY, কোন পৃথক PRIMARY KEYসূচক আছে


6

উপরের কয়েকটি থেকে একটি অভিযোজন এখানে প্রতিটি সূচক যে টেবিলটির জন্য ব্যবহার করেছে তা মোট সূচকের শতাংশ দিতে, আশা করি এটি কারও পক্ষে কার্যকর হবে

select 
    database_name, 
    table_name, 
    index_name, 
    round((stat_value*@@innodb_page_size)/1024/1024, 2) SizeMB, 
    round(((100/(SELECT INDEX_LENGTH FROM INFORMATION_SCHEMA.TABLES t WHERE t.TABLE_NAME = iis.table_name and t.TABLE_SCHEMA = iis.database_name))*(stat_value*@@innodb_page_size)), 2) `Percentage`
from mysql.innodb_index_stats iis 
where stat_name='size' 
and table_name = 'TargetTable'
and database_name = 'targetDB'

উদাহরণ আউটপুট

database_name   table_name  index_name  SizeMB  Percentage
targetDB        TargetTable id          10      55.55
targetDB        TargetTable idLookup    5       27.77
targetDB        TargetTable idTest      3       16.66

শুভেচ্ছা লিয়াম


আমার একটি বিশেষ কেস রয়েছে যাতে কোনও পিকে সূচকের জন্য শতকরা ১৮৪৪ বা 7 677 এর মতো ১০০ এর বেশি মান দেখায় I আমি মনে করি যে এই ক্ষেত্রেগুলির জন্য কোয়েরিতে কোনও সমস্যা আছে।
অ্যালেক্স প্যান্ড্রিয়ার

2

PhpMyAdmin ব্যবহার করে, টেবিলের কাঠামোটি দেখার সময় নীচে কোথাও একটি বিশদ লিঙ্ক রয়েছে। একবার আপনি এটিতে ক্লিক করলে এটি আপনাকে টেবিলে থাকা সূচিগুলির মোট আকার প্রদর্শন করবে যেখানে এটি স্থান ব্যবহারের চিহ্ন হিসাবে চিহ্নিত রয়েছে।

আমি মনে করি না যদিও এটি প্রতিটি সূচি পৃথকভাবে আপনাকে দেখায়।


পিএইচপিএমআইএডমিনের সাহায্যে এটি সত্যিই সহজ। ধন্যবাদ!
মিঃফ্যাবিও


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