2013-12-19 4 views
3

В таблице с 10 столбцами нет индексов, кроме первичного ключа в одном числовом столбце, и одного оператора INSERT INTO с 2500 строк, для выполнения вставки требуется от 40 до 60 секунд (разовая транзакция ... приблизительно 40 секунд в 1:00 и 60 секунд в обычные рабочие часы).Google Cloud SQL - медленная производительность INSERT

Я использую com.mysql.jdbc.GoogleDriver и экземпляр D0.

Мне кажется странным, что, когда я использую локальную среду разработки и подключаюсь удаленно через нее, используя тот же код (только diff - это удаленное соединение), те же самые вставки занимают всего около 10 секунд, а не 40-60 секунд. Так что что-то замедляется, когда оно перемещается в приложение ...

Есть ли способ улучшить развертывание App Engine?

EDIT: Я только что добавил примеры кода. Обратите внимание, что при запуске сервера dev и доступе к облачному SQL это выполняется довольно быстро (10 секунд в последнем тесте).

Вот создать таблицу заявление:

CREATE TABLE import_test (import_test_ID bigint NOT NULL COMMENT 'AUTOKEY' , INDEX (import_test_ID) , first_name varchar(30) COMMENT '' , last_name varchar(30) COMMENT '' , address varchar(60) COMMENT '' , city varchar(30) COMMENT '' , state varchar(10) COMMENT '' , zip varchar(15) COMMENT '' , PRIMARY KEY (import_test_ID) ) COMMENT '' 

и очень длинные вставки (около 3100 строк), которые я урезана здесь:

INFO: INSERT INTO import_test (import_test_ID, first_name, last_name, address, city, state, zip) VALUES (?,?,?,?,?,?,?), (?,?,?,?,?,?,?), (?,?,?,?,?,?,?), (?,?,?,?,?,?,?), ... 
+0

Я просто попробовал обновление до экземпляра D2, но, к сожалению, он имел точно такое же значение, что и D0 - около 57 секунд, чтобы вставить 2500 строк. Это кажется очень медленным, учитывая сегодняшнюю вычислительную силу. –

+0

Не могли бы вы предоставить пример кода, чтобы воспроизвести это? –

+0

только что добавленные примеры кода –

ответ

0

Вы можете установить репликацию асинхронный.

+0

Не могли бы вы объяснить, как? – i3arnon

+0

Экземпляр установлен в асинхронный. Головоломка - это то, почему экземпляр * того же * делает вставку через 10 секунд при доступе к ней из среды разработчика (Eclipse) против 45 + секунд при развертывании. –

+0

Вы уверены, что это * тот же * экземпляр? В режиме dev в проектах, поддерживаемых хранилищем данных, я знаю, что вместо этого он создает локальную базу данных машины. Для хранилища данных то, что на самом деле делает, я здесь - это sqlite db, созданный для работы как хранилище данных. Поэтому я не был бы уверен в том, что вы не будете разбираться в том, что вы разговариваете буквально с той же базой данных в режиме dev. –

Смежные вопросы