
Новые сообщения [новые:0]
Дайджест
Горячие темы
Избранное [новые:0]
Форумы
Пользователи
Статистика
Статистика нагрузки
Мод. лог
Поиск
|
|
25.11.2014, 20:11:21
|
|||
|---|---|---|---|
Как рационально сделать счетчик? |
|||
|
#18+
Очень давно я считал посещаемость выделяя селектом нужную статью и добавляя ++ затем записывая апдейт Код: plsql 1. 2. Понятно что это было совсем глупо и я упростил до одной строки: Код: plsql 1. Но и это тормозит, загрузка сервера слишком большая, в час пик примерно 14000 одновременно открытых соединений с сервером с базой полегче, но все-равно когда начинает обходить поисковик счетчик просто захлебывается от апдейтов. Пробовал считать добавляя в отдельную таблицу по записи какую историю посетили, однако потом возникает проблема при занесении обновлений в основную таблицу. Можете подсказать какую тактику предпринять? Может стоит вынести кол-во посещений в отдельную таблицу, но тогда придется постоянно проверять есть ли номер такой статьи в базе, так как в день добавляется по 6-10 статей. А это еще одна операция проверки чего хотелось бы избежать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
25.11.2014, 20:20:24
|
|||
|---|---|---|---|
Как рационально сделать счетчик? |
|||
|
#18+
alexnews, Движок таблицы какой? innodb_flush_log_at_trx_commit чему равен? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
25.11.2014, 20:39:43
|
|||
|---|---|---|---|
Как рационально сделать счетчик? |
|||
|
#18+
miksoft, | innodb_flush_log_at_trx_commit | 1 | но сама таблица MYISAM ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
26.11.2014, 11:57:44
|
|||
|---|---|---|---|
Как рационально сделать счетчик? |
|||
|
#18+
alexnews, сделай расслоение счётчика на, скажем, 100 слоёв (частей), каждый сбрасывай в начале суток и увеличивай отдельно. В конце суток сливай всю информацию в главный счётчик (суммируя все слои). Расслонение делай по идентификаторам пользователей или сессий по mod 100 (или ещё как-то). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
26.11.2014, 12:00:08
|
|||
|---|---|---|---|
Как рационально сделать счетчик? |
|||
|
#18+
alexnewsmiksoft, | innodb_flush_log_at_trx_commit | 1 | но сама таблица MYISAMЯ бы предложил преобразовать в InnoDB и сделать innodb_flush_log_at_trx_commit=2 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
26.11.2014, 12:00:56
|
|||
|---|---|---|---|
Как рационально сделать счетчик? |
|||
|
#18+
alexnewsmiksoft, | innodb_flush_log_at_trx_commit | 1 | но сама таблица MYISAM Это хреново. Как Inno разводит транзакции -- понятно. Как это делает MyISAM -- вообще загадка. (я мог бы прочитать документацию, но не собираюсь этим заниматься, поскольку как не ACID-субд может обрабатывать ACID- транзакции мне совершенно неинтересно знать). Я бы поменял тип движка хотя бы для этой конкретной таблицы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
26.11.2014, 12:03:47
|
|||
|---|---|---|---|
Как рационально сделать счетчик? |
|||
|
#18+
MasterZivРасслонение делай по идентификаторам пользователей или сессий по mod 100 (или ещё как-то). Да, главное, чтобы статистически изменения по всем счётчикам были распределены равномерно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
26.11.2014, 12:04:13
|
|||
|---|---|---|---|
Как рационально сделать счетчик? |
|||
|
#18+
MasterZivКак Inno разводит транзакции -- понятно. Как это делает MyISAM -- вообще загадка.Как раз не загадка - совсем не разводит. Тупо блокирует всю таблицу. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
26.11.2014, 12:05:48
|
|||
|---|---|---|---|
Как рационально сделать счетчик? |
|||
|
#18+
MasterZivMasterZivРасслонение делай по идентификаторам пользователей или сессий по mod 100 (или ещё как-то). Да, главное, чтобы статистически изменения по всем счётчикам были распределены равномерно.Тут, кстати, удобно делить на 256 частей и использовать последний (младший) байт в ip-адресе клиента. Они распределены практически равномерно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
26.11.2014, 14:41:31
|
|||
|---|---|---|---|
Как рационально сделать счетчик? |
|||
|
#18+
miksoftMasterZivКак Inno разводит транзакции -- понятно. Как это делает MyISAM -- вообще загадка.Как раз не загадка - совсем не разводит. Тупо блокирует всю таблицу. Ну тогда для этого случая достаточно безразлично, какой тип движка -- что он всю таблицу из одной записи блокирует, что только одну запись в таблице. Конечно, для расслоения перевод на Inno обязателен. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
26.11.2014, 14:43:50
|
|||
|---|---|---|---|
Как рационально сделать счетчик? |
|||
|
#18+
MasterZivтаблицу из одной записи блокируетТак запись не одна. Там еще некий WHERE id='$id' присутствует. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|

start [/forum/topic.php?fid=47&tablet=1&tid=1833883]: |
0ms |
get settings: |
8ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
64ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
44ms |
get tp. blocked users: |
1ms |
| others: | 240ms |
| total: | 388ms |

| 0 / 0 |
