[SQL] Скорость выполнения запросов

Сообщения
2,491
Реакции
2,790
Помог
61 раз(а)
пока визуально не понял как это работает
Я же подобное видео бросал в чате. И это только врешина айсберга по алгоритмам которые используются внутри. Чесно говоря я сам не докнца знаю все эти алгоритмы. Но скажу с увереностью что они позволяют существенно ускорить поиск.
именно на запись? или update тоже?
га любое изменение. Но у тебя в основном будет изменения поля при вставке. Посему можна смело принебречь временем переиндексаии с учетом того, какой бонус в итоге получим при поиске игрока.

Также я не знаю как в SQLite, но в mysql иногда бывает, что план запроса оптимизируется самой базой без учета индекса хотя он есть. Тогда можна (и даже нужно) форсировать его. На моей практике я встречал подобное только один раз.
 
Сообщения
1,012
Реакции
814
Помог
10 раз(а)
fantom, если я создаю поле AuthID
CREATE TABLE players_stats (AuthID TEXT NOT NULL PRIMARY KEY ASC)

То, как я понимаю индекс создается какой-то автоматически?
Грубо говоря мне не придется ему(хотя скорее всего и не даст) создать индекс?
CREATE INDEX ^"AuthID^" ON ^"players_stats^" (^"AuthID^" ASC);"

Ибо даже с простым PRIMARY KEY ASC выдает мне
SEARCH TABLE players_stats USING INDEX sqlite_autoindex_players_stats_1 (AuthID=?)

Что в принципе наверное одно и тоже, то есть тот же бинарный поиск будет.
 
Сообщения
1,012
Реакции
814
Помог
10 раз(а)
fantom, теперь вопрос такой, на сколько вообще критично делать update игрока при каждом убийстве/смерти?
Выше fl0wer упомянул, что статистку можно обновлять в реал-тайме, речь конечно же о внешней базе дынных.

Вопрос не о целесообразности даже, а именно о критичности. То, что это не шибко целесообразно я и сам понимаю ))
 
Сообщения
2,491
Реакции
2,790
Помог
61 раз(а)
Javekson, в принципе время от времени все же стоит обновлять. Причина тому проста: возможная потеря данных при падении сервера или смене карты (я уже говорил в чате). А вот как именно где это будет сделано после смерти или по таску решать тебе.
 
Сообщения
1,012
Реакции
814
Помог
10 раз(а)
fantom, самый надежный вариант и самый достоверный это при каждом kill
 
Сообщения
1,661
Реакции
1,486
Помог
24 раз(а)
Самый надежный это сразу)
 
Сообщения
1,175
Реакции
2,144
Помог
57 раз(а)
Код:
		cvar[CVAR_UPDATESTYLE] = create_cvar("csstats_sql_update", "-1", FCVAR_NONE, "How to update player stats in db^n\
												-2 - on death and disconnect^n\
												-1 - on round end and disconnect^n\
												0 - on disconnect^n\
												higher than 0 - every n seconds and disconnect")
 
Сообщения
1,012
Реакции
814
Помог
10 раз(а)
fl0wer, так он и будет сразу ) Я лишь переживаю за критичность
15 Мар 2019
BlackSignature, вижу ) Но при каждой смерти сохранять еще и по дисконнекту не вижу смысла.
На уме следующие:
При каждом RG_CBasePlayer_Killed отправлять один запрос на обновление сразу двух игроков(iVictim и iKiller)
 
Сообщения
327
Реакции
289
Помог
9 раз(а)
При каждом RG_CBasePlayer_Killed отправлять один запрос на обновление сразу двух игроков(iVictim и iKiller)
Похоже, я перестарался в работе с БД в стремлении минимизировать кол-во обращений. Кто-то борется за каждый лишний запрос, чтобы хиленькие базы хостингов не умирали, а кто-то их даже не считает) Почитайте темы про AES, где индивидуумы каждый раунд обновляют данные- м.б. передумаете.
 
Сообщения
1,012
Реакции
814
Помог
10 раз(а)
zhorzh78, так зачем мне хост под эти цели? ) VDS'ka на KVM вполне справиться с этой задачей, мне незачем экономить ее ресурсы, почему и хочу перейти на внешку, что бы разгрузить основной сервер работой, как я понимаю отправлять и получать ответ в этом нету критичности, всю обработку данных произведет соседний vds.
16 Мар 2019
Почитайте темы про AES, где индивидуумы каждый раунд обновляют данные
у меня сейчас каждые 30сек идет обновление, критичного не замечаю, как говорил вышел 32 запроса обновляются за ~1сек, в принципе это уже не смертельно, меня бесила задержка при /rank и /top но кажется я уже решил этот вопрос
 
Сообщения
327
Реакции
289
Помог
9 раз(а)
Javekson, Вам обрисована картина в общем. Если делаете только для себя, то решение вполне можно принять по результатам тестов. Если сохранение каждую секунду (например) для вас приемлемо- делайте так (если необходимо). Но, у меня как-то лицо искривляется от мысли сохранения после убийства с гранаты 3-х чел одновременно)
16 Мар 2019
у меня сейчас каждые 30сек идет обновление
С какой целью так делаете? Чем не устраивает сохранение при выходе игрока? Просто интересно.
 
Сообщения
1,012
Реакции
814
Помог
10 раз(а)
Чем не устраивает сохранение при выходе игрока?
Карта не меняется, человек может играть весь день, данные потеряются если сервер упадет.
16 Мар 2019
лицо искривляется от мысли сохранения после убийства с гранаты 3-х чел одновременно)
при смене карты ты так же получишь апдейт 32 игроков одновременно(если делать чисто по дисконнекту, как ты говоришь)
16 Мар 2019
=DDD Дело вкуса? )
 

Пользователи, просматривающие эту тему

Сейчас на форуме нет ни одного пользователя.
Сверху Снизу