Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Temukan semua kolom bilangan bulat yang mencapai batasnya menggunakan information_schema

Saya menulis solusi untuk tugas ini, tetapi saya bukanlah satu-satunya orang yang melakukan hal seperti ini.

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 -tools/blob/master/pk-full-ratio.sql

Kueri itu di-hard-code untuk test skema, jadi Anda perlu mengeditnya untuk skema Anda sendiri.

Jawaban singkat untuk pertanyaan "apakah kunci utama saya akan meluap?" adalah hanya mengubahnya menjadi BIGINT UNSIGNED sekarang. Itu pasti akan bertahan sampai runtuhnya peradaban.

Di git repo yang sama, saya memiliki skrip serupa lainnya untuk memeriksa semua kolom integer, bukan hanya kunci utama kenaikan otomatis. Tapi itu tidak terlalu menjadi perhatian untuk kolom lain.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cara memanggil prosedur setiap kali koneksi mysql dibuat di amazon RDS

  2. Peringatan:mysql_fetch_array() mengharapkan parameter 1 menjadi sumber daya [...]

  3. Kesalahan saat menginstal MySQL-python dengan pip install di OSX, virtualenv

  4. Contoh CURRENT_TIMESTAMP – MySQL

  5. Ruby on Rails MySQL #08S01Jabat tangan yang buruk - turunkan versi MySQL?