HSQLDB как вставить 1 миллион записей

Я разрабатываю приложение GWT.

Чтобы протестировать свой DataGrid, я создал кнопку, которая звонит на мой сервер. Когда я нажимаю на него, в базу данных должен быть вставлен 1 миллион записей.

я создал псевдоним

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)

Я проверил и понял, что не могу вставить сразу 1 млн строк, или могу?

Как лучше всего вставить такой огромный объем данных?

Я использую HSQLDB версии 2.2.4.


person nixspirit    schedule 14.11.2012    source источник
comment
Здесь вы можете найти ответ на аналогичную проблему.   -  person ShyJ    schedule 14.11.2012


Ответы (1)


Поскольку вы используете CREATE MEMORY TABLE, все данные сохраняются в памяти. Возможно, вам придется увеличить выделение кучи Java для хранения данных.

С файловыми базами данных вы можете использовать CREATE CACHED TABLE, чтобы уменьшить использование памяти.

person fredt    schedule 14.11.2012
comment
Но если я использую кешированные таблицы, я завишу от ввода-вывода. В любом случае, я выбрал таблицы MEMORY и увеличил пространство кучи Java. - person nixspirit; 16.11.2012
comment
Вы сами выбираете, какой тип стола больше подходит для вашего приложения. - person fredt; 16.11.2012