मैंने इस कार्य के लिए एक समाधान लिखा है, लेकिन मैं शायद ही अकेला व्यक्ति हूँ जिसने ऐसा कुछ किया हो।
select concat('`', table_schema, '`.`', table_name, '`.`', column_name, '`') as `column`,
auto_increment as `current_int`, max_int, round((auto_increment/max_int)*100, 2) as `pct_max`
from (select table_schema, table_name, column_name, auto_increment,
pow(2, case data_type
when 'tinyint' then 7
when 'smallint' then 15
when 'mediumint' then 23
when 'int' then 31
when 'bigint' then 63
end+(column_type like '% unsigned'))-1 as max_int
from information_schema.tables t
join information_schema.columns c using (table_schema,table_name)
join information_schema.key_column_usage k using (table_schema,table_name,column_name)
where t.table_schema in ('test')
and k.constraint_name = 'PRIMARY'
and k.ordinal_position = 1
and t.auto_increment is not null
) as dt;
https://github.com/billkarwin/bk -टूल्स/ब्लॉब/मास्टर/पीके-फुल-अनुपात.एसक्यूएल
उस क्वेरी को test
. के लिए हार्ड-कोड किया गया है स्कीमा, इसलिए आपको इसे अपने स्वयं के स्कीमा के लिए संपादित करने की आवश्यकता है।
प्रश्न का संक्षिप्त उत्तर "क्या मेरी प्राथमिक कुंजी अतिप्रवाह होने वाली है?" बस इसे BIGINT UNSIGNED
में बदलना है अभी व। यह निश्चित रूप से सभ्यता के पतन तक चलेगा।
उसी गिट रेपो में, मेरे पास सभी . की जांच करने के लिए एक और समान स्क्रिप्ट है पूर्णांक कॉलम, न केवल ऑटो-वृद्धि प्राथमिक कुंजी। लेकिन यह अन्य स्तंभों के लिए उतनी चिंता का विषय नहीं है।