[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Данные за каждый месяц
Страницы: 1, 2, 3, 4, 5, 6, 7, 8
twin
Цитата (Valick @ 26.12.2014 - 04:20)
Цитата
Накой тратить крупные суммы, когда прекрасно работает цикл.

просто снежный ком вырос, когда это стоило не дорого это никому не надо было, обычное русское "и так сойдёт"

Все в точности до наоборот. Раньше статистика у меня пересчитывалась в он-лайн режиме. Потом база распухла и стала жутко тормозить. Пришлось вешать на крон. Потом она распухла еще больше и пришлось делить на партии, потому что за раз это стало невозможно.

И вот теперь уже два года спокойненько пыхтит цикл и есть пить не просит. Смысла что-то изобретать ради того, чтобы сказать "запрос в цикле - плохо" нет ни малейшего смысла. По моим расчетам задела хватит еще лет на пять. А за это время много воды утечет. Уже сейчас готовится новая версия с чистыми таблицами.

Так что правила, это конечно хорошо. Но есть в них исключения.

_____________
Если вам недостаточно собственных заблуждений, можно расширить их мнениями экспертов.

Нужно уважать мнение оппонета. Ведь заблуждаться - его святое право.

Настаивал, настаиваю и буду настаивать на своем. На кедровых орешках.

user posted image
Valick
Цитата (twin @ 26.12.2014 - 08:03)
Но есть в них исключения.

это называется костыли, исключения - это когда нет других вариантов wink.gif

_____________
Стимулятор ~yoomoney - 41001303250491
S.Chushkin
Цитата (Valick @ 25.12.2014 - 23:26)
если бы это было на самом деле так...

Читайте доку, полезно бывает wink.gif
И PDO тут не причём - это просто обёртка, одна из.

_____________
Рекламка / ad.pesow.com Хрень / mr-1.ru
Valick
Цитата
Читайте доку, полезно бывает

ссылочку пожалуйста
Цитата
И PDO тут не причём - это просто обёртка, одна из.

это не просто обёртка у неё собственные драйвера для работы с БД

_____________
Стимулятор ~yoomoney - 41001303250491
S.Chushkin
Цитата (twin @ 25.12.2014 - 22:58)
Есть еще одна беда. Время. У меня есть скрипт, который по крону раз в час пересчитывает статистику. Основная таблица очень большая и если делать один апдейт, таблица лочится и все остальное просто ложится. Нагрузка на БД очень большая, порядка 40-50 запросов секунду. Не говоря уже о памяти.

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

Если кто-то подскажет, как сделать это не в цикле, буду признателен.

Вернее даже не так. Кто предложит более оптимальный вариант, чем апдейт в цикле, тот молодец.

Я думаю, что в Вашем случае стоит прислушаться к sergeiss и перенести эту бизнес-логику из PHP в хранимку. Хотя без подробностей совет конечно про сферического коня. smile.gif
И да, цифра в 50 запросов ничего не говорит, запрос запросу рознь, - важно число читаемых строк на клиента и число изменяемых строк - должно быть порядка 10-20К/с по совокупности. Внутреннее число чтений из таблиц для InnoDB должно быть порядка пары-другой миллионов в сек (см. Innodb_rows_read# и т.п.). Кроме того update позволяет и читать и изменять несколько связанных таблиц - процесс заметно ускоряется. Транзакция это нормально. Таблица не должна "лочится" принципиально - что-то у Вас не так в датском королевстве, ищите.
С другой стороны, принцип "Работает - не трож" ни кто не отменял. wink.gif

_____________
Рекламка / ad.pesow.com Хрень / mr-1.ru
S.Chushkin
Цитата (Valick @ 26.12.2014 - 11:08)
Цитата
Читайте доку, полезно бывает

ссылочку пожалуйста

Читатйте доку про mysqli::query параметр resultmode и про mysqli_use_result, mysqli_store_result.

_____________
Рекламка / ad.pesow.com Хрень / mr-1.ru
twin
Цитата (Valick @ 26.12.2014 - 06:37)
Цитата (twin @ 26.12.2014 - 08:03)
Но есть в них исключения.

это называется костыли, исключения - это когда нет других вариантов wink.gif

Так их и нет. И быть не может. Единственный вариант - так же разбить на кусочки и часто-часто запускать крон. Но по сути это тот же цикл - раз, нестабильно и глючно - два. Я пробовал. И вот это точно костыль.

А правила без исключений, это фанатизм кстати.

_____________
Если вам недостаточно собственных заблуждений, можно расширить их мнениями экспертов.

Нужно уважать мнение оппонета. Ведь заблуждаться - его святое право.

Настаивал, настаиваю и буду настаивать на своем. На кедровых орешках.

user posted image
twin
S.Chushkin
Цитата
И да, цифра в 50 запросов ничего не говорит, запрос запросу рознь
Тут не столько в нагрузке дело. Если собрать все данные в один апдейт, он выполняется жутко долго. До нескольких минут бывает. За это время скапливается огромная очередь. Соответственно сайт ложится. А в цикле я усыпляю скрипт при каждой итерации на долю секунды, очередь рассасывается (вернее не успевает собираться) и все довольны.

Хранимка тут не поможет. Она все равно отожрет очень много времени.

_____________
Если вам недостаточно собственных заблуждений, можно расширить их мнениями экспертов.

Нужно уважать мнение оппонета. Ведь заблуждаться - его святое право.

Настаивал, настаиваю и буду настаивать на своем. На кедровых орешках.

user posted image
S.Chushkin
Цитата (twin @ 26.12.2014 - 11:36)
Если собрать все данные в один апдейт, он выполняется жутко долго. До нескольких минут бывает.

Покажи запросы и параметры данных/таблиц, чтобы говорить предметно.
А так критерий один - при изменении таблиц должно отрабатываться порядка 20К записей в сек (+/-).

_____________
Рекламка / ad.pesow.com Хрень / mr-1.ru
twin
S.Chushkin
Цитата
Таблица не должна "лочится" принципиально - что-то у Вас не так в датском королевстве, ищите.
Тут был один раз огромный холивар на эту тему. И доков я перечитал гору. В теории не должна, но на практике факт остается фактом. Жаль не могу показать распечатку процессов, не валить же сайт специально, но она лочится как миленькая. Уж не знаю почему.

_____________
Если вам недостаточно собственных заблуждений, можно расширить их мнениями экспертов.

Нужно уважать мнение оппонета. Ведь заблуждаться - его святое право.

Настаивал, настаиваю и буду настаивать на своем. На кедровых орешках.

user posted image
twin
S.Chushkin
Наврал насчет количества. 40-50 в секунду, это посещаемость. Количество запросов гораздо выше. Не 20k конечно, но все же. Данные не могу показать, сам понимаешь. Специально готовить для показа не вижу смысла. По одной простой причине.
Цитата
принцип "Работает - не трож" ни кто не отменял.
Зачем что-то менять, когда все прекрасно работает. Я не фанатик.

Единственное, что могу показать, чтоб не быть голословным, это объемы, с которыми приходится работать.

_____________
Если вам недостаточно собственных заблуждений, можно расширить их мнениями экспертов.

Нужно уважать мнение оппонета. Ведь заблуждаться - его святое право.

Настаивал, настаиваю и буду настаивать на своем. На кедровых орешках.

user posted image
Invis1ble
проверил MYSQLI_ASYNC, затраты 287 571 968 на той же таблице
код использовал из мануала http://php.net/manual/ru/mysqli.poll.php

_____________

Профессиональная разработка на заказ

Я на GitHub | второй профиль

Valick
Цитата (S.Chushkin @ 26.12.2014 - 10:30)
Читатйте доку про mysqli::query параметр resultmode и про mysqli_use_result, mysqli_store_result.

и что по вашему я там должен вычитать? то что из MySQL в РНР идёт чтение построчно? так я об этом и говорю, и более того точно так же себя должен вести PDO, что само по себе логично.
Я просил ссылку на то что PDO по вашему мнению грузит сразу весь результат в РНР и уже на стороне РНР копается в нём по средствам fetch()

_____________
Стимулятор ~yoomoney - 41001303250491
S.Chushkin
Цитата (Valick @ 26.12.2014 - 12:01)
Я просил ссылку на то что PDO...

Я не использовал PDO, не пользую и не буду, поэтому про неё ищите сами.

_____________
Рекламка / ad.pesow.com Хрень / mr-1.ru
Invis1ble
Цитата
Я просил ссылку на то что PDO по вашему мнению грузит сразу весь результат в РНР и уже на стороне РНР копается в нём по средствам fetch()

а что, это не очевидно было после этих результатов?

_____________

Профессиональная разработка на заказ

Я на GitHub | второй профиль

Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2025 Invision Power Services, Inc.