JPAまたはデータベース・レベルのいずれかで、データベース表の主キーにMAX値を設定できますか?それが不可能な場合は、私は約データベーステーブルの主キーにMAX値を設定できますか?
- が戻りオブジェクトがある場合は、新たに、
key
を作成してデータベース上でSELECTを実行してください - (9999999999私のMAXである)0から9999999999の間のランダムな
key
を作成します考えていました
null
、INSERT、繰り返していない場合は、手順1に戻ります。
したがって、私は上記の2つの質問を行います。環境が同時に高いことに注意してください:
Q1:SELECTでチェックするオーバーヘッドはありますか?INSERTは重要ですか?私が本当に意味するのは、通常、このプロセスは普通です、なぜなら私はDBが私のために一意のPKを作成させるからです。
質問2:Q1でパフォーマンスが大幅に低下しない場合は、同時に問題に対処できますか?たとえば、Id1のP1がテーブルをチェックしていれば、Id1はそこにはなく、挿入する準備ができています.P2がP1の前に挿入Id1に潜んでいます。したがって、P1がId1を挿入すると失敗します。私はここでプロセスが失敗するのを望んでいない、私はそれがループをバックアップする、新しいIDを見つける、プロセスを繰り返すしたい。それ、どうやったら出来るの?
私の環境はSQLとMYSQLです。私はEclipseLinkを実装
NOTEでJPAを使用します。一部の人々はこのようにそれを実装するために私の決定を疑問視、答えはTravisJ
は以下示唆するもの正確です。私は非常に高い並行環境を持っています。プロセスが始動すると、別のプロセスへのリクエストを作成し、そのプロセスに固有の10文字のIDを渡す必要があります。環境は大電流であるため、PKのユニークで非ヌルな機能を活用したいと考えています。リクエストには大量の情報が含まれているので、リクエストIDが自分のPKであるRequest
テーブルを作成します。私は、すべてのDBのインデックスは、PKのクエリは、PKのクエリが速いので知っている。より良い方法があれば教えてください。
なぜこのようなことをしたいですか? – Ben
あなたがそれを望む理由は事実上存在しません。 PKの役割を酷使しているように見えますが、これはあなたが何か間違っていることを示しています。長い話は短いです:それをしないでください。 –
私は理由がないという意見に同意します。これは、主キーのための何らかの種類のハッシュを作成するために使用できます。育った主な問題は競合状態であるように見えます。これは、異なるプロセスがセマフォを必要とすることを意味します。 –