|
|
|
Правильная организация хранения временных данных
|
|||
|---|---|---|---|
|
#18+
На сайте есть поиск, результаты которого решил заносить во временную таблицу. Пока юзер на сайте был один, этого было достаточно - перед каждым поиском очищал временную таблицу (TRUNCATE), обнуляя счетчики и т.д. Теперь изменил структуру, добавив поле USER_ID и каждый результат принадлежит теперь конкретному пользователю. Но возник такой момент. Каждый поиск занимает 500-1000 строк в таблице. Так даже если перед поиском из таблицы будут удаляться строки текущего юзера, рано или поздно Primary-счетчик достигнет предела, да и дело даже в другом - помоему это несовсем корректный подход. Вопрос - как в таком случае правильно организовать хранение данных в этой временной таблице? Пока на ум приходит только одна идея - добавить еще одно поле - дата поиска и перед поиском, если самая свежая запись старше 24 часов - делать TRUNCATE таблицы. Но если записей будет скажем 10000, то это уже может сказаться на времени выполнения, ведь чтобы узнать самую свежую запись, серверу нужно будет перебрать их все, что может занять немало времени. Вобщем, подскажите, кто какой выход находил в подобных ситуациях. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.06.2014, 20:07:34 |
|
||
|
Правильная организация хранения временных данных
|
|||
|---|---|---|---|
|
#18+
Random2рано или поздно Primary-счетчик достигнет предела 2634152 Random2Но если записей будет скажем 10000, то это уже может сказаться на времени выполнения, ведь чтобы узнать самую свежую запись, серверу нужно будет перебрать их всеuse the Forceindexes, Luke! Хотя для 10к записей и индекс-то навряд ли нужен ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.06.2014, 21:13:59 |
|
||
|
Правильная организация хранения временных данных
|
|||
|---|---|---|---|
|
#18+
Random2На сайте есть поиск, результаты которого решил заносить во временную таблицу. Пока юзер на сайте был один, этого было достаточно - перед каждым поиском очищал временную таблицу (TRUNCATE), обнуляя счетчики и т.д. Теперь изменил структуру, добавив поле USER_ID и каждый результат принадлежит теперь конкретному пользователю. Но возник такой момент. Каждый поиск занимает 500-1000 строк в таблице. Так даже если перед поиском из таблицы будут удаляться строки текущего юзера, рано или поздно Primary-счетчик достигнет предела, да и дело даже в другом - помоему это несовсем корректный подход. Вопрос - как в таком случае правильно организовать хранение данных в этой временной таблице? Пока на ум приходит только одна идея - добавить еще одно поле - дата поиска и перед поиском, если самая свежая запись старше 24 часов - делать TRUNCATE таблицы. Но если записей будет скажем 10000, то это уже может сказаться на времени выполнения, ведь чтобы узнать самую свежую запись, серверу нужно будет перебрать их все, что может занять немало времени. Вобщем, подскажите, кто какой выход находил в подобных ситуациях. да не совсем верно. наводящий вопрос - зачем результат поиска хранить в базе данных??? храни его сразу на клиенте базы данных. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.06.2014, 21:30:24 |
|
||
|
Правильная организация хранения временных данных
|
|||
|---|---|---|---|
|
#18+
Спасибо за ответы. По поводу наводящих вопросов: > зачем результат поиска хранить в базе данных??? Это связано со спецификой работы веб-приложения. Если попытаться объяснить вкратце, то есть 3 типа поиска и каждый из них пользователь может выполнять когда ему захочется. Приложение должно отображать и работать с любым из этих типов. Раньше никогда не разрабатывал такого функционала и БД к нему, поэтому решил сделать таким способом. А правильно или нет решил уточнить здесь, у знающих людей. Этот способ показался мне наиболее приемлемым, тем более что где-то когда-то встречал такие советы. > храни его сразу на клиенте базы данных. Несовсем понял, что имеется ввиду под "клиентом базы данных"? tanglir, т.е. такой подход к хранению результатов поиска, как я описал вполне приемлем и используется при разработке различных приложений (когда можно результаты хранить в таблице БД). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.07.2014, 12:32:21 |
|
||
|
|

start [/forum/topic.php?fid=47&msg=38681242&tid=1834581]: |
0ms |
get settings: |
9ms |
get forum list: |
16ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
41ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
38ms |
get tp. blocked users: |
1ms |
| others: | 201ms |
| total: | 322ms |

| 0 / 0 |
