AUTO_INCREMENT
列が制限に近づいていることを確認する bash スクリプトを作成するように割り当てられました。これを行う最善の方法は、「現在の自動インクリメント値」を取得し、「サポートされている列のデータ型の最大値」と比較することです(たとえば、 の場合は255 tinyint
)。
データベースには約 2Tb のデータがありますが、時間がかかりすぎるため、INFORMATION SCHEMA
テーブルをクエリして取得したくありません。AUTO_INCREMENT
したがって、両方ともテーブルをクエリするため、使用でき(SHOW TABLE STATUS LIKE 'table_name')
ません。(SELECT AUTO_INCREMENT FROM information_schema.tables)
INFORMATION SCHEMA
情報スキーマ テーブルにアクセスせずに現在の AUTO_INCREMENT を取得する回避策があるかもしれないと言われましたが、その方法はわかりません。何か案は?
これは私がデータ型を取得する方法です
DATA_TYPE="`$MYSQLCONNECT -D $DATABASE --batch -N -e "SELECT DATA_TYPE FROM
INFORMATION_SCHEMA.COLUMNS WHERE TABLE_SCHEMA = '$DATABASE' AND TABLE_NAME='$TABLE' AND
EXTRA='auto_increment'"`"
これは、列が処理できる最大値を取得する方法です。
MAX_VALUE="`$MYSQLCONNECT -D $DATABASE --batch -N -e "SELECT ( CASE '$DATA_TYPE' WHEN 'tinyint'
THEN 255 WHEN 'smallint' THEN 65535 WHEN 'mediumint' THEN 16777215 WHEN 'int' THEN 4294967295
WHEN 'bigint' THEN 18446744073709551615 END >> IF(LOCATE('unsigned', COLUMN_TYPE) > 0, 0, 1) )
as MAX_VALUE FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_SCHEMA = '$DATABASE' AND TABLE_NAME
= '$TABLE' AND EXTRA='auto_increment'"`"