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

start [/forum/topic.php?fid=47&msg=38817418&tid=1833883]: |
0ms |
get settings: |
6ms |
get forum list: |
16ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
45ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
50ms |
get tp. blocked users: |
1ms |
| others: | 196ms |
| total: | 331ms |

| 0 / 0 |
