Имя: Пароль:
IT
Веб-мастеринг
Как лучше добавить записи в таблицу MySQL? Порциями по 100 штук или все сразу?
,
0 Помогите
 
01.07.16
13:41
1. Разбить на запросы поменьше 50% (1)
2. Свой варик 50% (1)
3. Все одним запросом 0% (0)
4. Каждую запись отдельным запросом 0% (0)
5. Вообще без разницы 0% (0)
Всего мнений: 2

Как лучше добавить записи в таблицу MySQL? Порциями по 100 штук за каждый запрос или все 20000 сразу одним запросом?
1 Irbis
 
01.07.16
13:42
20000 сразу, смысл мельчить, хотя если полей 1000, можно и частями. А проблема в чём?
2 Зая Бусечка
 
01.07.16
13:43
А как добавляешь? Код покажи...
3 Jonny_Khomich
 
01.07.16
13:44
по 1000 добавляй в транзакции
4 Помогите
 
01.07.16
13:45
(1) Полей мало. Сейчас на 20 000 записях работает норм. Но если их будет в 100 раз больше ничего страшного не случится?

(2) Обычным инсерт конечно. Как иначе?
5 Волшебник
 
модератор
01.07.16
13:46
лучше по одной
6 Помогите
 
01.07.16
13:46
(3) Почему думаешь что все сразу не стоит?

(5) Почему так лучше?
7 Зая Бусечка
 
01.07.16
13:47
(4) В нормальном сервере можно сделать инсерт порциями, можно булком.
8 Помогите
 
01.07.16
13:47
(7) А как лучше? Сервер нормальный
9 Помогите
 
01.07.16
13:49
Сервер не запарится парсить запрос если текст запроса будет на гигабайт?
10 Зая Бусечка
 
01.07.16
13:49
(9) Он его просто не примет. В нормальном сервере есть ограничение на размер запроса - где-то 32КБ
11 Волшебник
 
модератор
01.07.16
13:50
(6) Для MySQL так лучше. У неё часто таблицы сыпятся. Лучше работать маленькими запросами.

Для ускорения можно отключить индексы, добавить, потом включить индексы.
12 degot
 
01.07.16
13:51
(0)гугли "load data infile"
13 vde69
 
01.07.16
13:52
(9) текст запроса должен целиком вмещаться в физическую ОЗУ, по этому при достижении определенных размеров - будет вылет с системной ошибкой...

по этому любые инсерты с непредсказуемым размером правильно дробить...

Разбить на запросы поменьше
14 Зая Бусечка
 
01.07.16
13:54
(13) Память тут ни причём. У сервера есть тупо ограничение на размер запроса. Они страхуются от недостатка памяти, не совсем дурные... хотя мыскл... Там может быть всё, что угодно
15 Помогите
 
01.07.16
13:55
(10) У меня работают запросы >>32Kb. Значит сервер не нормальный?

(11) Спасибо! Буду по одной добавлять.

(12) Это не по теме

Темку можно закрыть.
16 Зая Бусечка
 
01.07.16
13:56
(15) Я не помню точное значение ограничений. Но оно есть
17 Aistovich
 
01.07.16
13:59
обычно все наооборот должно быть из май в мс, а тут прям интересное что-то, это чего-то в инет магазин выгружается из фронта...
18 vde69
 
01.07.16
14:03
(14) ты путаешь минимальное выделение памяти на запрос и предел...
19 ul_tim
 
01.07.16
14:32
Если разбираешься и имеешь доступ к настройкам My SQL то лучше одним запросом, если нет - тогда порциями по 10 тыс, например. Вообще делал запись одним запросом 90 тыс позиций - порядка 2 сек. Нет там никаких глюков. При обрыве соединения в момент записи большой порции, если запрос написал правильно - My SQL норм отрабатывает отмену порции.

Свой варик
20 ul_tim
 
01.07.16
14:38
И еще. Если что то глючило в какой то версии 5 лет назад или при непонятных обстоятельствах - это не повод писать все построчно и забивать сеть десятками тысяч мелких запросов, а потом не понимать почему сайт тормозит. Единственный ньюанс - конечно нужно знать параметр по ограничению и ставить его в требуемом значении.
21 Помогите
 
01.07.16
19:29
Отлично. Спасибо!
22 Asmody
 
01.07.16
19:45
20000 на несколько гигабайт? Ты там хайрез фотки в блобах держишь?
23 Asmody
 
01.07.16
19:46
"В сто раз больше полей" - О_о!!!
24 Asmody
 
01.07.16
19:49
(11) В 5х версиях не сыплются. Не, ну сыплются, конечно, но редко.
25 Помогите
 
01.07.16
22:58
(22) нет, 20000 - это очень маленький запрос, всего на 1 мегабайт, он работает отлично. Но возможны более крупные запросы, неизвестного заранее размера.
Глупец, лишенный способности посмеяться над собой вместе с другими, не сможет долго выносить программирование. Фредерик Брукс-младший