У меня много данных, и я хочу вставить их в БД хотя бы раз. Я делаю некоторые тесты.
Я создаю таблицу (используя скрипт ниже * 1) с 21 столбцом. 1 столбец является целым, остальные 20 столбцов являются строковыми. Там нет индекса. Я пишу тестовый код, создаю случайные значения и вставляю в БД (используя вставку sql * 2). Прежде чем запускать команду sql, вызовите conn.setAutoCommit (false), чем conn.commit (). Эта операция около 6-7 секунд. Существует официальный документ (* 3), в котором говорится, что для массовой вставки используется команда «COPY». Создайте аналогичный файл ascii и повторно протестируйте его, этот тест закончился примерно за 5 секунд.
Используя тот же тестовый код на той же машине, вставьте те же данные в Mysql, тестируйте менее 1 секунды. Я действительно удивляюсь, что по сравнению с 6-7 секундами большое улучшение производительности. Это различие действительно существует, или я что-то упускаю.
Спасибо за помощь
Моя тестовая конфигурация - это Solaris 10 и PostgreSQL 9.0.2 и Mysql 5.0.85.
(* 1) PostgreSQL Create DB Script
CREATE TABLE tablo
(
id integer,
column1 character varying(50),
column2 character varying(50),
column3 character varying(50),
....
column20 character varying(50)
)
WITH (
OIDS=FALSE
);
ALTER TABLE tablo OWNER TO pgadmin;
(* 2) Вставить запрос
INSERT INTO tablo values (1,'column67062724628797','column26007603757271','column73982294239806','column43213154421324','column97722282440805','column79000889379973','column10680880337755','column14322827996050','column80720842739399','column22777514445036','column77771307997926','column92799724462613','column89992937353110','column61693061355353','column43804223262229','column62209656630047','column52150955786400','column85726157993572','column33358888005133','column77743799989746'),(2,'column77383691774831','column67841193885377','column36149612452454','column51161680852595','column91649734476301','column57283307765550','column14997046117948','column29457857794726','column91157683305554','column44413196495111','column40702778794938','column24744999726868','column38356057278249','column16808618337554','column64362413535503','column19577167594144','column72943639162993','column46830376244427','column01942608599939','column66479131355003'),
....
10K lines
(* 3) Официальный адрес документа PostgreSql
http://www.postgresql.org/docs/8.3/interactive/populate.html