0

GWT アプリケーションを開発しています。

DataGrid をテストするために、サーバーを呼び出すボタンを作成しました。私がそれにヒットしたとき、100万のレコードがデータベースに挿入されるはずです。

エイリアスを作成しました

CREATE FUNCTION PUBLIC.GENERATENAME() RETURNS VARCHAR(32768) SPECIFIC GENERATENAME_10073 LANGUAGE JAVA NOT DETERMINISTIC NO SQL CALLED ON NULL INPUT EXTERNAL NAME 'CLASSPATH:com.package.sql.Helper.generateName'

そして、ストアドプロシージャを作成しました

CREATE PROCEDURE PUBLIC.GENERATE() SPECIFIC GENERATE_10073 LANGUAGE SQL NOT DETERMINISTIC MODIFIES SQL DATA NEW SAVEPOINT LEVEL BEGIN ATOMIC DECLARE VAL_P BIGINT;TRUNCATE TABLE PUBLIC.CONTACT;SET VAL_P=1;LOOP_LABEL:WHILE VAL_P<=1000 DO INSERT INTO PUBLIC.CONTACT VALUES VAL_P,PUBLIC.GENERATENAME(),PUBLIC.GENERATENAME();SET VAL_P=VAL_P+1;END WHILE LOOP_LABEL;END

私のテーブルはシンプルなものです

CREATE MEMORY TABLE PUBLIC.CONTACT(CONTACT_ID BIGINT GENERATED BY DEFAULT AS IDENTITY(START WITH 1) NOT NULL PRIMARY KEY,FIRST_NAME VARCHAR(10) NOT NULL,SECOND_NAME VARCHAR(10) NOT NULL)

テストしたところ、一度に 1M 行を挿入できないことがわかりました。

このような膨大な量のデータを挿入する最良の方法は何ですか?

HSQLDB バージョン 2.2.4 を使用しています

4

1 に答える 1

0

CREATE MEMORY TABLE を使用するため、すべてのデータがメモリに格納されます。データを格納するには、Java ヒープ割り当てを増やす必要がある場合があります。

ファイル データベースでは、CREATE CACHED TABLE を使用してメモリ使用量を削減できます。

于 2012-11-14T16:38:29.670 に答える