Допустим вы напишите большую вставку и тем самым заблокируете select-запросы и скрипты всего сайта (!) остановятся на 1-5 секунд, после чего все вместе начнут исполнятся - нагрузка скаканет и неизвестно выравняется ли потом вообще.
Числом запросов много времени не сэкономить. Подобное используется если mysql-сервер подключается по тормозной сети. Тогда отправка мелких запросов крупными пачками и получение ответа опять же пачкой выгоднее по времени.
netwind добавил 24.01.2011 в 15:57
CyBase: lstaticl, MySQL умный.
mysql_insert_id() выдаст первый идентификатор
mysql_insert_id()+3 - выдаст последний идентификатор
Если запустить два процесса на вставку параллельно, второй будет ждать окончания первого
интересно. но что произойдет если используется innodb ? я не знаю, кстати.
счетчик auto increment он как бы сам по себе и не зависит числа вставленных записей.
Специально для этого существует SQL_CALC_FOUND_ROWS и SELECT FOUND_ROWS();
Но использовать его нужно только тогда, когда возникает задача описанная в первом посте и вы действительно запросите все эти строки.
Не нужно использовать эту функцию для оценки числа подходящих записей, которые вы не будете выводить на странички - у вас получится DLE, а записи на самом деле все равно будут подниматься и оцениваться сервером.
Если объем данных не такой большой, чтобы удобство программирования превалировало над потенциальной проблемой производительности, то отчего бы не использовать.
Trafikgon, в конце концов все сводится к базе срабатывающих в определенных условиях сигнатур. Поэтому можешь попробовать clamav интегрировать в свою программу. Там эти сигнатуры уже есть.
Надеюсь, этой идеи хватит до лета, а там и к бабушке.
Чтобы создать свои сигнатуры придется поработать настоящим вирусным аналитиком.
mysqli выглядит как бескостыльный.
http://ru.php.net/manual/en/mysqli.multi-query.php
ну разве что вам придется вместо insert into .. values (..), (..)
сформировать кучу отдельных операторов.
и, пожалуй, ожидать наличия mysqli на произвольном хостинге не стоит.
Еще можно ввести в таблицу "метку вставки" = значению функции connection_id() - она уникальна в рамках одного сервера.
а потом выбирать id вставленных строк по этой метке.
Давно проверено, что INSERT запросы в цикле отрабатывают значительно медленнее, чем MULTI-запрос. (Одна из тем: http://zendframework.ru/forum/index....sg5800#msg5800)
Слишком безаппеляционно, не находите?
Допустим вы напишите большую вставку и тем самым заблокируете select-запросы и скрипты всего сайта (!) остановятся на 1-5 секунд, после чего все вместе начнут исполнятся - нагрузка скаканет и неизвестно выравняется ли потом вообще.
по идее C-api это позволяет - посылать пачку запросов и последовательно забирать результаты
не уверен что в php это реализовано правильно.
http://ru.php.net/manual/en/mysqli.multi-query.php
А расскажите зачем вам это нужно?
Числом запросов много времени не сэкономить. Подобное используется если mysql-сервер подключается по тормозной сети. Тогда отправка мелких запросов крупными пачками и получение ответа опять же пачкой выгоднее по времени.
netwind добавил 24.01.2011 в 15:57
lstaticl, MySQL умный.
mysql_insert_id() выдаст первый идентификатор
mysql_insert_id()+3 - выдаст последний идентификатор
Если запустить два процесса на вставку параллельно, второй будет ждать окончания первого
интересно. но что произойдет если используется innodb ? я не знаю, кстати.
счетчик auto increment он как бы сам по себе и не зависит числа вставленных записей.
Andreyka, будет, но покажи мне хороший форум где это реализовано из коробки?
Поэтому почтовые сервера шлют много уведомлений моему серверу пользователю www
Mail delivery failed: returning message to sender
так это ведь твой же сервер и шлет в большинстве случаев.
по-моему в постфиксе можно подкрутить где-то чтобы не создавались такие письма.
HTTPD, а откуда они про это узнают? для этого мать нужно подключить и вспомнить проверить версию прошивки. Крупные магазины могут на это наплевать.
Ну перепрошьет назад в крайнем случае.
Либо мать глючит конкретно с этими хардами, либо один хард глючный, а и у матери один канал sata глючит.
милок, так у тебя же трусы линяют! (c)
это BSD глючит. Ну хотя бы биос перепрошей, прежде чем возвращать.
Специально для этого существует SQL_CALC_FOUND_ROWS и SELECT FOUND_ROWS();
Но использовать его нужно только тогда, когда возникает задача описанная в первом посте и вы действительно запросите все эти строки.
Не нужно использовать эту функцию для оценки числа подходящих записей, которые вы не будете выводить на странички - у вас получится DLE, а записи на самом деле все равно будут подниматься и оцениваться сервером.
Если объем данных не такой большой, чтобы удобство программирования превалировало над потенциальной проблемой производительности, то отчего бы не использовать.
Trafikgon, в конце концов все сводится к базе срабатывающих в определенных условиях сигнатур. Поэтому можешь попробовать clamav интегрировать в свою программу. Там эти сигнатуры уже есть.
Надеюсь, этой идеи хватит до лета, а там и к бабушке.
Чтобы создать свои сигнатуры придется поработать настоящим вирусным аналитиком.
rtyug, fulltext все тот же key_buffer использует, значит можно.