面接では、次のようなシナリオを経験する必要があります。
この質問はファンから聞いたのですが、 文章 シンプルバージョン まず、MySQLではInt整数の範囲は次のようになることを理解しましょう。 符号なし整数を例に挙げてみましょう。保存範囲は 0 から 4294967295 で、約 43 億になります。まず、自動増分IDが最大値に達した後、データが挿入され続けると、主キー競合例外が次のように報告されるとします。
解決策も非常に簡単です。Int型をBigInt型に変更します。BigIntの範囲は次のとおりです。 たとえ1秒あたり1万件のデータ項目があり、それを100年間実行したとしても、1つのテーブル内のデータは
次に、面接官はもっと難しい質問をするかもしれません。
変更方法 現在、業界ではテーブル構造のオンライン変更に3つのソリューションがあります。私の知る限り、一般的には次の3つがあります。 方法1: MySQL 5.6以降が提供するオンライン変更機能を使用する MySQL 自体が提供するいわゆる関数は、MySQL 独自のネイティブ ステートメントです。たとえば、元のフィールド名とタイプを変更する場合などです。 mysql> ALTER TABLE table_name CHANGE old_field_name new_field_name field_type; MySQL 5.5 より前では、これは一時テーブルをコピーすることによって実現されていました。 図に示すように、データ型の変更などの操作では同時 DML 操作はサポートされていません。つまり、 その場合、方法2または方法3のみを使用できます 方法2: サードパーティツールを使用する 業界には、テーブル構造のオンライン変更をサポートできるサードパーティ ツールがいくつかあります。これらのサードパーティ ツールを使用すると、
1. 変更されたデータ テーブル構造を持つ新しいテーブルを作成します。このテーブルは、ソース データ テーブルから新しいテーブルにデータをインポートするために使用されます。 2. データがコピーされた後、ソース データ テーブルのデータの変更を継続する操作を記録するトリガーを作成します。データがコピーされた後、これらの操作を実行して、データが失われないようにします。 3. ソース データ テーブルから新しいテーブルにデータをコピーします。 4. ソース データ テーブルの名前を古いテーブルの名前に変更し、新しいテーブルの名前をソース テーブルの名前に変更して、古いテーブルを削除します。 5. トリガーを削除します。 しかし、実際にはこれら 2 つのツールは 上級バージョン 実際、上記の質問に答えると、この記事はほぼ完成します。しかし、最初に言ったことを思い出してください。これは非常に テーブル `t` を作成します ( `id` int(11) NOT NULL AUTO_INCREMENT, 主キー (`id`)、 ) 日本語 次のSQLを実行します t 値に挿入します(null); // 挿入された行は (1) です 始める; t 値に挿入します(null); ロールラック; t 値に挿入します(null); // 挿入された行は (3) です したがって、テーブル内の実 ID は必然的に不連続になります。 したがって、実際には、自動インクリメント主キーが使い果たされるまで待つことはできません。したがって、専門家の答えは次のようになります。
MySQL の自動インクリメント主キーが不足した場合の対処法についてはこれで終了です。MySQL の自動インクリメント主キーが不足した場合の対処法の詳細については、123WORDPRESS.COM の過去の記事を検索するか、以下の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。 以下もご興味があるかもしれません:
|
<<: Dockerコンテナオーケストレーション実装プロセス分析
>>: WeChatアプレットに2048ミニゲームを実装する詳細なプロセス
背景Docker の人気は、コンテナの共有と移植が容易であることと密接に関係しています。ユーザーは、...
目次MySQL Shell import_table データのインポート1. import_tabl...
私はしばらくの間チャートをいじっていましたが、好奇心から、CSS を使用してチャートを作成するより良...
公式ドキュメント http://dev.mysql.com/doc/refman/5.7/en/se...
この記事では、例を使用して MYSQL パフォーマンス アナライザー EXPLAIN の使用方法を説...
以下のように表示されます。 #!/usr/bin/env python3.5 psutilをインポー...
MySQL では、datetime 型は通常、時間を保存するために使用されますが、現在では多くのシス...
日常の開発では、データベースの追加、削除、変更、クエリが一般的に行われるため、Mysql で NUL...
序文これは、オンライン コンテナーの拡張によって発生した調査です。最終的には、実際の OOM が原因...
プロジェクトのテーマがすべての人の美的感覚を満足できないこともあります。このとき、スキン変更機能は非...
Prometheus (プロメテウスとも呼ばれる) 公式サイト: https://prometheu...
クラウドサーバーを使用するとデータベースに接続できる場合もありますが、Navicat Premium...
ページをナビゲートする2つの方法宣言型ナビゲーション: リンクをクリックしてナビゲーションを実現する...
この記事の例では、矢印をクリックして画像を切り替えるVue + jsの具体的なコードを共有しています...
Mysqlリモート接続構成を実装する2つの方法会社で働いていると、誰かのコンピュータに保存されている...