![]() |
|
Модераторы: skyboy, MoLeX, Aliance, ksnk |
![]()
|
|
| Feldmarschall |
|
|||
|
Новичок ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2641 Регистрация: 11.12.2007 Репутация: 1 Всего: 32 |
НЕСКОЛЬКО ПОЛЕЙ в одной строке можно обновлять ОДНИМ запросом.
если ты в таблице users меняешь поля money, rh, и dob, то это можно, и нужно! делать одним запросом. а не десятью. ты так и не ответил на вопрос, сколько всего запросов исполняется |
|||
|
||||
| skyboy |
|
|||
|
неОпытный ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9820 Регистрация: 18.5.2006 Где: Днепропетровск Репутация: 14 Всего: 260 |
||||
|
||||
| Fortop |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2200 Регистрация: 13.11.2007 Где: Донецк Репутация: 3 Всего: 42 |
Зачем? Данные нужно проверять лишь при обращении к ним. Иначе у тебя никакая база не выдержит. -------------------- Мир это Я. Живее всех живых. |
|||
|
||||
| m1kle |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 245 Регистрация: 2.5.2007 Где: Москва, Россия Репутация: нет Всего: нет |
Feldmarschall, прочитал я синтаксис оператора UPDATE, стало многое понятно.
skyboy, всегда кто-то работает, всегда нужно уменьшать время сколько осталось работать на еденицу. Fortop, У мен так и есть, если что-то лежит в базе - делаем, не лежит, не делаем.
Вот новый код. Помоему по сравнению со старым кодом, это просто супер-код. Что то ещё можно сделать? Это сообщение отредактировал(а) m1kle - 12.6.2008, 23:03 |
|||
|
||||
| Feldmarschall |
|
|||
|
Новичок ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2641 Регистрация: 11.12.2007 Репутация: 1 Всего: 32 |
ничего.
как тебе уже сто раз сказали - оптимизируют не супер-кодом, а замерами. ты этого так и не понял. и не поймешь. |
|||
|
||||
| skyboy |
|
|||
|
неОпытный ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9820 Регистрация: 18.5.2006 Где: Днепропетровск Репутация: 14 Всего: 260 |
у тебя реальная работа с лопатой за окном или модель, основанная на БД и алгоритмах? положим, мне надо определить время выполнения скрипта. как мне лучше сделать: каждую секунду увеиличать счетчик секунд на 1 или посчитать время до запуска, время после выполнения и вычислить разницу? |
|||
|
||||
| Fortop |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2200 Регистрация: 13.11.2007 Где: Донецк Репутация: 3 Всего: 42 |
Тебе skyboy, уже привел пример. Вопрос не в делаем/не делаем. Вопрос в том, что ты не должен обновлять данные каждую секунду/минуту. А рассчитывать их когда какой-либо пользователь захочет их прочитать. Рассчитал, и сохранил с новым временем. Теперь при следующем обращении ты будет отсчитывать от текущих значений. И только 1-2 раза в сутки ты можешь сделать глобальный пересчет. Например для статистики/рейтингов и т.д. Пример. Есть иммитатор выращивания морковки. Вместо того чтобы каждую секунду обновлять базу, что какая-то морковка выросла на 1мм. Мы сохранили ее состояние на момент посева 0мм и время. Также у нас есть формула за сколько времени она вырастает на 1мм. Тогда, если пользователь посмотрел на эту конкретную морковку.... 1. Мы читаем состояние из базы, вычисляем разницу между временем текущим и тем что в базе. 2. Записываем новое состояние (3мм и время в базу). Все остальное время мы базу не трогаем. -------------------- Мир это Я. Живее всех живых. |
|||
|
||||
| m1kle |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 245 Регистрация: 2.5.2007 Где: Москва, Россия Репутация: нет Всего: нет |
Похоже я начинаю въезжать. Только реализовать вычитание из одного времени другое?
Тогда получается штука, которая выполняется раз в минуту не нужна. |
|||
|
||||
| Feldmarschall |
|
|||
|
Новичок ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2641 Регистрация: 11.12.2007 Репутация: 1 Всего: 32 |
Я бы, все-таки, разобрался сначала, что именно у него там тормозит.
удивительно ведь - база крошечная, все в памяти крутится. Тупо от количества запросов ложится? Или аффтар врет, что таблицы только маленькие. Ну что за база юзеров размером в 300 килобайт. что у него - всего пара тыщ человек зарегистрировано, что ли? или тормозит совсем в другом месте. Надо смотреть в базе show processlist в момент, когда проц занят смотреть slow queries log |
|||
|
||||
| m1kle |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 245 Регистрация: 2.5.2007 Где: Москва, Россия Репутация: нет Всего: нет |
Да, две тысячи сто с небольшим человек.
В этом скрипте уже неважно, где тормозит, его скоро не будет. |
|||
|
||||
| Feldmarschall |
|
|||
|
Новичок ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2641 Регистрация: 11.12.2007 Репутация: 1 Всего: 32 |
хех. действительно. теперь будет тормозить в другом =)
|
|||
|
||||
| IZ@TOP |
|
|||
![]() Панда-бир! ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 4795 Регистрация: 3.2.2003 Где: Бамбуковый лес Репутация: 4 Всего: 73 |
Feldmarschall, на счет выпрямления конечностей согласен. И за дурачка, пожалуйста, меня не держи, ок? А вот апдейты - не самое страшное, если на поля в условии созданы индексы. Еще меньше это все роляет, если таблица InnoDB с транзакциями.
Я плачу... -------------------- Один из розовых плюшевых-всадников апокалипсиса... очень злой... Семь кругов ада для новых элементов языка Мои разрозненные мысли |
|||
|
||||
| Feldmarschall |
|
|||
|
Новичок ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2641 Регистрация: 11.12.2007 Репутация: 1 Всего: 32 |
ты хотел сказать - наоборот. если селекты, то не самое страшное, если в полях созданы индексы. а вот апдейтов, как раз, злейший враг - индексы. поскольку после каждого апдейта надо ВЕСЬ индекс перестроить. что есть операция гораздо более затратная, чем, просто записать новую строчку в таблицу. |
|||
|
||||
| IZ@TOP |
|
|||
![]() Панда-бир! ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 4795 Регистрация: 3.2.2003 Где: Бамбуковый лес Репутация: 4 Всего: 73 |
Я как хотел - так и сказал. Давайте не будем путать понятия: апдейт и инсерт. А что происходит, когда на таблице MyISAM проходит запрос на UPDATE с условием по полю, на котором нет индекса я видел неоднократно. И результат, самое главное, всегда один: забивается очередь запросов. По поводу перестройки индексов, читаем оф. документацию:
Это сообщение отредактировал(а) IZ@TOP - 18.6.2008, 14:27 -------------------- Один из розовых плюшевых-всадников апокалипсиса... очень злой... Семь кругов ада для новых элементов языка Мои разрозненные мысли |
|||
|
||||
| m1kle |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 245 Регистрация: 2.5.2007 Где: Москва, Россия Репутация: нет Всего: нет |
Я же сказал, откажусь от функции, которая выполняется раз в минуту. Но тут другая проблема, допустим я записал в базу время устройства на работу..как мне его вытащить, и вычесть его из текущего времени?
|
|||
|
||||
![]()
|
| 1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | PHP: Базы Данных | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |