SQLinfo.ru - Все о MySQL Webew.ru: теория и практика веб-технологий

Форум пользователей MySQL

Задавайте вопросы, мы ответим

Вы не зашли.

#1 15.05.2011 00:11:45

AndreSnake
Участник
Зарегистрирован: 13.05.2011
Сообщений: 15

insert большого количества данных

как можно ускорить процесс inserta
я делаю инсерт данных примерно так (мне надо просто накопировать данные)
insert into table1 (fiaeld1, field2...)
(select fiaeld1, field2... from table1)

выдало ошибку
Error Code: 2013
Lost connection to MySQL server during query (600sec)

как можно увлеичить время таймаута?

Неактивен

 

#2 15.05.2011 12:07:37

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6757

Re: insert большого количества данных

MySQL сам не ограничивает никак время выполнения запросов.

Вижу два возможных варианта: ограничение есть в клиентской библиотеке
доступа (например, выставляется таймаут, который, при срабатывании уби-
вает соединение) или за сервером следит какое-то стороннее приложение,
которое убивает соединения со стороны сервера, если они выполняются
более 10 минут.

Неактивен

 

#3 15.05.2011 12:17:52

rgbeast
Администратор
MySQL Authorized Developer and DBA
Откуда: Москва
Зарегистрирован: 21.01.2007
Сообщений: 3880

Re: insert большого количества данных

Возможно ограничение установлено хостером.

Неактивен

 

#4 15.05.2011 12:42:56

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6757

Re: insert большого количества данных

Скорее всего, так оно и есть.

Неактивен

 

#5 15.05.2011 14:02:45

AndreSnake
Участник
Зарегистрирован: 13.05.2011
Сообщений: 15

Re: insert большого количества данных

я запрос выполняю локально на машине из-под workbench

Неактивен

 

#6 15.05.2011 19:33:00

evgeny
Гуру
Зарегистрирован: 04.05.2009
Сообщений: 335

Re: insert большого количества данных

AndreSnake написал:

как можно ускорить процесс inserta
я делаю инсерт данных примерно так (мне надо просто накопировать данные)
insert into table1 (fiaeld1, field2...)
(select fiaeld1, field2... from table1)

выдало ошибку
Error Code: 2013
Lost connection to MySQL server during query (600sec)

как можно увлеичить время таймаута?

А что вообще пытаетесь сделать ?
Зачем заливать данные из таблицы в саму себя ? Пытаетесь дублировать данные ?
Какой тип таблицы ? MyIsam ?

Неактивен

 

#7 15.05.2011 22:42:18

AndreSnake
Участник
Зарегистрирован: 13.05.2011
Сообщений: 15

Re: insert большого количества данных

да пытаюсь дублировать данные. надо сэмулировать большой объем данных. хочу понять можно ли юзать mysql для статистики. тип бд - InnoDb. просто я где-то читал что MyIsam  - ненадежная и часто падает....

Неактивен

 

#8 15.05.2011 22:43:49

AndreSnake
Участник
Зарегистрирован: 13.05.2011
Сообщений: 15

Re: insert большого количества данных

но уже вижу что mysql явно проигрывает в скорости ms sql, но к сожалению ms sql express имеет ограниченный размер файла бд.

Неактивен

 

#9 15.05.2011 23:09:04

rgbeast
Администратор
MySQL Authorized Developer and DBA
Откуда: Москва
Зарегистрирован: 21.01.2007
Сообщений: 3880

Re: insert большого количества данных

AndreSnake написал:

но уже вижу что mysql явно проигрывает в скорости ms sql, но к сожалению ms sql express имеет ограниченный размер файла бд.

Приведите конкретные операции и конфигурацию железа, используемые для сравнения, иначе получается необоснованное утверждение.

Неактивен

 

#10 15.05.2011 23:15:24

AndreSnake
Участник
Зарегистрирован: 13.05.2011
Сообщений: 15

Re: insert большого количества данных

ну пример простой - копировал таблицу саму на  себя. чтобы сделать 30-40млн строк в mssql мне понадобилось буквально пару тройку минут, конечно могу ради интереса провести более точные измерения. в my sql мне пришлось возиться намного дольше чтоб получить такую же результирующую таблицу. опять же точных измерений не проводил просто общее впечатление... с mysql все делаю в workbench - может это еще дает какие-то задержки....

Неактивен

 

#11 15.05.2011 23:18:32

rgbeast
Администратор
MySQL Authorized Developer and DBA
Откуда: Москва
Зарегистрирован: 21.01.2007
Сообщений: 3880

Re: insert большого количества данных

А какая версия MySQL? Если под Windows, то желательно использовать не ниже 5.5, иначе проблема с производительностью InnoDB. Какая скорость будет для таблиц MyISAM? В ms sql используется транзакционный движок?

Неактивен

 

#12 15.05.2011 23:28:36

simple
Активист
Зарегистрирован: 25.11.2010
Сообщений: 168

Re: insert большого количества данных

В Mysql нельзя выбрать данные из таблицы и в эту же таблицу вставить, ошибка именно в этом. Извиняюсь за поспешные выводы, сейчас проверил, действительно можно, но документация на сайте mysql, утверждает обратное почему то.

Отредактированно simple (15.05.2011 23:38:06)

Неактивен

 

#13 15.05.2011 23:30:06

AndreSnake
Участник
Зарегистрирован: 13.05.2011
Сообщений: 15

Re: insert большого количества данных

rgbeast написал:

А какая версия MySQL? Если под Windows, то желательно использовать не ниже 5.5, иначе проблема с производительностью InnoDB. Какая скорость будет для таблиц MyISAM? В ms sql используется транзакционный движок?

версия mysql 5.5 может стоит попробовать MyISAM. кстати еще один пример насчет производительности. я набросал прогу заливающую данные - в ms sql залить 10000 * 90 строк - понадобилось не много времени, точно не помню - делал на работе но факт - долго не ждал)
таже прога но использующая Connector/Net6 битый час если не больше заливала 3000 * 60 строк...

Неактивен

 

#14 15.05.2011 23:33:18

AndreSnake
Участник
Зарегистрирован: 13.05.2011
Сообщений: 15

Re: insert большого количества данных

simple написал:

Нельзя выбрать данные из таблицы и в эту же таблицу вставить, ошибка именно в этом.

как это нельзя? кто запрещает делать

insert into tab1 (field1, filed2)
(select field1, filed2
from tab1)

работает прекрасно как в msqsql так и в mysql

Неактивен

 

#15 15.05.2011 23:56:35

AndreSnake
Участник
Зарегистрирован: 13.05.2011
Сообщений: 15

Re: insert большого количества данных

создал таблицу MyISAM - вижу работает намного шустрее!

Неактивен

 

#16 16.05.2011 00:03:33

rgbeast
Администратор
MySQL Authorized Developer and DBA
Откуда: Москва
Зарегистрирован: 21.01.2007
Сообщений: 3880

Re: insert большого количества данных

Еще зависит от того как загружать и какие индексы на таблицы. В примере из моего доклада Работа с большими таблицами за час в MyISAM загружается 2.5 миллиарда строк. Если по одной строке вставлять, то результат другой.

simple написал:

В Mysql нельзя выбрать данные из таблицы и в эту же таблицу вставить, ошибка именно в этом. Извиняюсь за поспешные выводы, сейчас проверил, действительно можно, но документация на сайте mysql, утверждает обратное почему то.

Где в документации написано? Можно запостить багу документации на bugs.mysql.com, такие баги исправляются относительно быстро.

Неактивен

 

#17 16.05.2011 00:26:55

simple
Активист
Зарегистрирован: 25.11.2010
Сообщений: 168

Re: insert большого количества данных

Неактивен

 

#18 16.05.2011 00:30:30

rgbeast
Администратор
MySQL Authorized Developer and DBA
Откуда: Москва
Зарегистрирован: 21.01.2007
Сообщений: 3880

Re: insert большого количества данных

Вы пользуетесь переводом старой версии документации (к сожалению нового перевода нет). В новой документации уточняется, что прямо в SELECT теперь можно поместить ту же таблицу, а в подзапрос нельзя.

http://dev.mysql.com/doc/refman/5.5/en/ … elect.html

The target table of the INSERT statement may appear in the FROM clause of the SELECT part of the query. (This was not possible in some older versions of MySQL.) However, you cannot insert into a table and select from the same table in a subquery.

Неактивен

 

Board footer

Работает на PunBB
© Copyright 2002–2008 Rickard Andersson