面接では、次のようなシナリオを経験する必要があります。
この質問はファンから聞いたのですが、 文章 シンプルバージョン まず、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ミニゲームを実装する詳細なプロセス
最近、Linux に Aphace、mysql、php をインストールするときに多くの問題に遭遇しま...
Keepalive は Vue プロジェクトでのキャッシュによく使用され、基本的な要件を満たすのに非...
メタ タグは、ファイル情報を定義し、検索エンジンによる検索を容易にするために Web ページ ファイ...
目次JavaScript イベント:よく使用されるイベント:イベントアクション要約するJavaScr...
この記事では、jQueryプラグインを使用してマインスイーパゲームを実装する方法に関する3番目の記事...
目次vモデル.sync微妙な違い機能シナリオを要約します。 vモデル <!--親コンポーネント...
Vueバージョンをファイルにコピーして使用します <テンプレート> <!-- カル...
目次データベース接続数が急増した理由は何ですか? 1. はじめに2. 知識ポイント3. 練習するIV...
許可ベースの電子メール マーケティングにより、マーケティングとプロモーションのコストを大幅に削減でき...
背景多くのウェブサイトのデザインは、一般的にコンテンツ+フッターの2つの部分で構成されています。コン...
nginx はリクエストを受信すると、まず server_name でサーバーを照合し、次にサーバー...
ログイン + セッションストレージエフェクト表示ログインに成功すると、ユーザー ID がフロントエン...
詳細には立ち入らずに、コードに直接進みましょう。一緒にコミュニケーションを取り、学びましょう。月ごと...
1. クロスドメインを実現するためにCORSレスポンスヘッダーを設定するクロスオリジンリソース共有...
表ラベルの構成HTML 内の表は <table> タグで構成されており、ブラウザはタグを...