Шаблон:Data/ЧТМ: различия между версиями
| [отпатрулированная версия] | [отпатрулированная версия] |
Lord (обсуждение | вклад) Нет описания правки |
Lord (обсуждение | вклад) Нет описания правки |
||
| Строка 13: | Строка 13: | ||
* {{Модуль|Cron/GenerateStats}} — служебный скрипт, предназначенный для агрегации, расчёта и кэширования полной базы данных финального турнира ЧТМ. | * {{Модуль|Cron/GenerateStats}} — служебный скрипт, предназначенный для агрегации, расчёта и кэширования полной базы данных финального турнира ЧТМ. | ||
* {{Модуль|Data/GrandStats.json}} — огромная бандура для хранения генерируемого <code>Cron/GenerateStats</code> машинного кода. | * {{Модуль|Data/GrandStats.json}} — огромная бандура для хранения генерируемого <code>Cron/GenerateStats</code> машинного кода. | ||
== Обновление баз данных == | |||
Пока актуально только для финального турнира ЧТМ, но планируется расширить. | |||
; Обновление | |||
# Обновите или исправьте статистику на нужной подстранице, убедитесь, что нет ошибок синтаксиса. | |||
# Откройте служебную страницу '''{{БС|Служебная|Развёртка шаблонов}}''' и вставьте следующий код: {{Параметр|#invoke:Cron/GenerateStats{{!}}main}} | |||
# Целиком скопируйте json-массив, перейдите на страницу '''[[Модуль:Data/GrandStats.json]]''', удалите всё её содержимое и замените на только что скопированный код. | |||
{{Начало скрытого блока|Очистка базы данных (только для разработчиков, имеющих доступ к SQL-запросам на сервере)}} | |||
JSON-массивы занимают несколько мегабайт и хранить в SQL горы устаревшего нечитаемого кода абсолютно бессмысленно. Поэтому необходимо периодически чистить кэш от старых расчётов следующим образом: | |||
<markdown>**Шаг 1. Находим `old_id` этих гигантских правок** | |||
Выполните следующий SQL-запрос:</markdown> | |||
<syntaxhighlight lang="sql" line> | |||
SELECT old_id, LENGTH(old_text) AS size, old_flags | |||
FROM text | |||
ORDER BY size DESC | |||
LIMIT 10; | |||
</syntaxhighlight> | |||
<markdown>Поскольку обычные статьи весят килобайты, этот запрос мгновенно выведет вам топ самых тяжелых правок за всю историю вашей вики. На первых строчках вы увидите ваши три правки размером ~2800000 байт. | |||
*Запишите их `old_id`.* | |||
**Шаг 2. Обнуляем их вес (Освобождаем БД)** | |||
Теперь мы просто превращаем этот машинный код в пустой, но валидный JSON-объект, чтобы не сломать парсер MediaWiki, если кто-то случайно откроет эту правку в истории. Выполните:</markdown> | |||
<syntaxhighlight lang="sql" line> | |||
UPDATE text | |||
SET old_text = '{"info": "Любой текст."}', | |||
old_flags = 'utf-8' | |||
WHERE old_id IN (НОМЕР, НОМЕР, НОМЕР); | |||
</syntaxhighlight> | |||
<markdown>*(Замените цифры в скобках на те `old_id`, которые вы нашли на первом шаге).* | |||
**Почему `old_flags = 'utf-8'`?** | |||
Иногда MediaWiki сжимает старые тяжелые правки и ставит флаг `gzip` или `utf-8,gzip`. Если мы заменяем сжатый бинарник на обычный текст, флаг `gzip` нужно обязательно убрать, иначе вики попытается «разархивировать» наш новый текст и выдаст ошибку. Флага `utf-8` или вообще пустой строки `''` будет достаточно.</markdown> | |||
{{Конец скрытого блока}} | |||
Версия от 22:38, 4 июня 2026
Список баз данных
- База данных финального турнира ЧТМ (Data)
2006 • 2010 • 2014 • 2018 • 2022 • 2026 • 2030 • 2034 • 2038 • 2042 • 2046
- База данных результатов всех турниров (Data/Tournaments)
2006 • 2009 • 2010 • 2013 • 2014 • 2015 • 2017 • 2018 • 2019 • 2020 • 2021 • 2022 • 2023 • 2024 • 2025 • 2026 • 2027 • 2028 • 2029 • 2030 • 2031 • 2032 • 2033 • 2034 • 2035 • 2036 • 2037 • 2038 • 2039 • 2040 • 2041 • 2042 • 2043 • 2044 • 2045 • 2046 • 2047 • 2048
- Прочие базы данных
- Data/Teams — словарь команд.
- Data/RatingCalc — единое хранилище словарей очков, рангов и ручных переопределений для движка подсчёта рейтинга.
- Технические страницы
- Cron/GenerateStats — служебный скрипт, предназначенный для агрегации, расчёта и кэширования полной базы данных финального турнира ЧТМ.
- Data/GrandStats.json — огромная бандура для хранения генерируемого
Cron/GenerateStatsмашинного кода.
Обновление баз данных
Пока актуально только для финального турнира ЧТМ, но планируется расширить.
- Обновление
- Обновите или исправьте статистику на нужной подстранице, убедитесь, что нет ошибок синтаксиса.
- Откройте служебную страницу Развёртка шаблонов и вставьте следующий код:
{{#invoke:Cron/GenerateStats|main}} - Целиком скопируйте json-массив, перейдите на страницу Модуль:Data/GrandStats.json, удалите всё её содержимое и замените на только что скопированный код.
JSON-массивы занимают несколько мегабайт и хранить в SQL горы устаревшего нечитаемого кода абсолютно бессмысленно. Поэтому необходимо периодически чистить кэш от старых расчётов следующим образом:
Шаг 1. Находим old_id этих гигантских правок
Выполните следующий SQL-запрос:
SELECT old_id, LENGTH(old_text) AS size, old_flags
FROM text
ORDER BY size DESC
LIMIT 10;
Поскольку обычные статьи весят килобайты, этот запрос мгновенно выведет вам топ самых тяжелых правок за всю историю вашей вики. На первых строчках вы увидите ваши три правки размером ~2800000 байт.
Запишите их old_id.
Шаг 2. Обнуляем их вес (Освобождаем БД) Теперь мы просто превращаем этот машинный код в пустой, но валидный JSON-объект, чтобы не сломать парсер MediaWiki, если кто-то случайно откроет эту правку в истории. Выполните:
UPDATE text
SET old_text = '{"info": "Любой текст."}',
old_flags = 'utf-8'
WHERE old_id IN (НОМЕР, НОМЕР, НОМЕР);
(Замените цифры в скобках на те old_id, которые вы нашли на первом шаге).
Почему old_flags = 'utf-8'?
Иногда MediaWiki сжимает старые тяжелые правки и ставит флаг gzip или utf-8,gzip. Если мы заменяем сжатый бинарник на обычный текст, флаг gzip нужно обязательно убрать, иначе вики попытается «разархивировать» наш новый текст и выдаст ошибку. Флага utf-8 или вообще пустой строки '' будет достаточно.