|
QuestDB - новая СУБД для хранения time series данных
|
|||
---|---|---|---|
#18+
Leonid Kudryavtsev курс одной котировки за 15+ лет в "минутках" = 15*365*24*60 = 7 884 000 записей на один символ возьмем, от балды, 50 тыс. символов = 7 884 000 * 50 000 = 394 200 000 000 записей IMHO примерно с такого объема данных можно начинать тестить и заканчивая где-то на 250-500 тыс символов если мы говорим о котировках AFAIK p.s. сотни тысяч символов получалось на каких-то специализированных рынках (вроде облигации или что-то такое), почему так много, в свое время объясняли, но я уже не помню. Но там символов было много, а данных, соответвтенно, в столько же раз меньше. Отлично, подобная задача может решаться полностью паралллельно. Можно например залить столько символов в одну базу сколько ядер на процессоре и выполнять запросы для каждого символа параллельно. 7.5 записей это фигня для одного потока. Вопрос только что с этими записями делать? Составлять volume based order book и считать wvap? ... |
|||
:
Нравится:
Не нравится:
|
|||
06.12.2019, 16:23 |
|
QuestDB - новая СУБД для хранения time series данных
|
|||
---|---|---|---|
#18+
Помните о чем я говорил. Параллелизм линейно наращивается на вычислительных задачах типа майнинга. Там где у процессов shared nothing. Получили задачу. Отработали и отдали результат. У вас - интенсивная интеракция с памятью. Тут старик Амдал злобно хохочет над нами. Первый поток загузит канал памяти вычитками. Второй поток поднимет общую производительность на 20-30% наверное. А третий еще добавить 3-5% и так далее. Вот здесь хадуп - герой. Дада дорогой товарищ. Имеено та таком кейсе. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.12.2019, 16:28 |
|
QuestDB - новая СУБД для хранения time series данных
|
|||
---|---|---|---|
#18+
Leonid Kudryavtsev смысла поколоночника для котировок особой не вижу в реальной системе били на чанки по времени также, не очень понятно, можно ли запросный движок обучать "хитрым" агригациям. Как я помню, вроде дневные и недельные котировки могут считаться хитрым образом, в зависимости от времени и графика работы биржи Если все данные всегда обрабатываются вместе то поколонник конечно проблемы не решают. В то же время расходы на наш поколонник супер маленькие. Для произвольных поисков или даже диапазон дат искать — есть преимущества. Хитрая агрегация не для всего, согласен. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.12.2019, 16:28 |
|
QuestDB - новая СУБД для хранения time series данных
|
|||
---|---|---|---|
#18+
mayton Помните о чем я говорил. Параллелизм линейно наращивается на вычислительных задачах типа майнинга. Там где у процессов shared nothing. Получили задачу. Отработали и отдали результат. У вас - интенсивная интеракция с памятью. Тут старик Амдал злобно хохочет над нами. Первый поток загузит канал памяти вычитками. Второй поток поднимет общую производительность на 20-30% наверное. А третий еще добавить 3-5% и так далее. Вот здесь хадуп - герой. Дада дорогой товарищ. Имеено та таком кейсе. Это теория, давайте может попробуем на практике? ... |
|||
:
Нравится:
Не нравится:
|
|||
06.12.2019, 16:30 |
|
QuestDB - новая СУБД для хранения time series данных
|
|||
---|---|---|---|
#18+
mayton Помните о чем я говорил. Параллелизм линейно наращивается на вычислительных задачах типа майнинга. Там где у процессов shared nothing. Получили задачу. Отработали и отдали результат. У вас - интенсивная интеракция с памятью. Тут старик Амдал злобно хохочет над нами. Первый поток загузит канал памяти вычитками. Второй поток поднимет общую производительность на 20-30% наверное. А третий еще добавить 3-5% и так далее. Вот здесь хадуп - герой. Дада дорогой товарищ. Имеено та таком кейсе. хадуп и low latency - это перпендикулярные понятия там полчаса вставка одной записи, полчаса выборка ... |
|||
:
Нравится:
Не нравится:
|
|||
06.12.2019, 16:34 |
|
QuestDB - новая СУБД для хранения time series данных
|
|||
---|---|---|---|
#18+
Бумбараш mayton Помните о чем я говорил. Параллелизм линейно наращивается на вычислительных задачах типа майнинга. Там где у процессов shared nothing. Получили задачу. Отработали и отдали результат. У вас - интенсивная интеракция с памятью. Тут старик Амдал злобно хохочет над нами. Первый поток загузит канал памяти вычитками. Второй поток поднимет общую производительность на 20-30% наверное. А третий еще добавить 3-5% и так далее. Вот здесь хадуп - герой. Дада дорогой товарищ. Имеено та таком кейсе. хадуп и low latency - это перпендикулярные понятия там полчаса вставка одной записи, полчаса выборка Справедливое замечание. Согласен. Но мой тезис был-бы неполный если-бы мы обсуждали только системы на базе 1 физического сервера. Надо было еще рассмотреть вычислительный grid. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.12.2019, 16:51 |
|
QuestDB - новая СУБД для хранения time series данных
|
|||
---|---|---|---|
#18+
bluestreak mayton Помните о чем я говорил. Параллелизм линейно наращивается на вычислительных задачах типа майнинга. Там где у процессов shared nothing. Получили задачу. Отработали и отдали результат. У вас - интенсивная интеракция с памятью. Тут старик Амдал злобно хохочет над нами. Первый поток загузит канал памяти вычитками. Второй поток поднимет общую производительность на 20-30% наверное. А третий еще добавить 3-5% и так далее. Вот здесь хадуп - герой. Дада дорогой товарищ. Имеено та таком кейсе. Это теория, давайте может попробуем на практике? Дай бог. Попробуем. Я пока не нашел практического применения для вашей системы. Но как только найду - затещу на своих данных. Если вы не против. И на своих запросах. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.12.2019, 16:52 |
|
QuestDB - новая СУБД для хранения time series данных
|
|||
---|---|---|---|
#18+
bluestreak Вопрос только что с этими записями делать? х.з. я не специалист, https://ru.tradingview.com/ на вход online поток данных (минутки, пятиминутки) с рынка на выходе история + агрегация онлайн объединения истории + новые данных и онлайн агрегация Но опять таки, нужно помнить, что агрегация это не тупое суммирование, а должна подчиняться правилам. Вроде из минуток дни собираются уже хитрым образом. Аналогично недели. Сплиты акций и пр. и пр. т.е. СУБД должна допускать возможность написания своих правил агрегации если дни, недели и всякие сплиты акций обрабатываются уровнем выше, чем БД, то тогда на уровне БД останется только хранение, а с этим любая база справится (данные хранятся не в виде записей, а просто chunk'ами в blob в сериализованном виде) ACID/надежность не сильно важна, т.к. потеря данных за текущей день вполне допустима (можно заново запросить у биржи) bluestreak Можно например залить столько символов в одну базу сколько ядер на процессоре и выполнять запросы для каждого символа параллельно 50 тысяч символов Возможно у Пентагона компьютеры с 50 тыс. ядер и существуют, но это как-то перебор ))) Сам присутствовал, когда "агрегатор" сломался при попытке залить за одну операцию >150 тысяч символов, банально одни только акторы для символов сожрали 2Gb heap. Какой-то хитрый рынок, где символов безумно много, но они маленькие Поэтому даже идея наплодить столько файлов, сколько символов - и то выглядит немного нетрадиционно, а уж сколько символов = столько ядер - утопия. bluestreak Если все данные всегда обрабатываются вместе то поколонник конечно проблемы не решают. В то же время расходы на наш поколонник супер маленькие. bar'ы котировок расходы на поколочник супер маленькие - не сильно верится расходы должны быть прямо пропорциональны кол-ву колонок mayton Первый поток загузит канал памяти вычитками. Второй поток поднимет общую производительность на 20-30% наверное не преувеличивайте у серверных процессоров кэш по 2-16 Mb на ядро перегрузить канал памяти вычитками, надо сильно постараться тут скорее важнее скорость общения с другими системами + переключение потоков операционкой у клиентов автора меланох и, подозреваю, если админы старались время выжимать, прерывания и обработчики к конкретным ядрам прибиты гвоздями Но честно говоря, узок круг людей, которые приложения на таких серверах готовы разворачивать. У обычных людей Ethernet и виртуалки, и хорошо если в одной стойке, а не в разных серверных и на разных континентах. А тут уже latency запроса будет значимо. Т.е. банальная идея например агрегировать минутки в СУБД, а дни собирать на уровне приложения - уже не очень хорошо выглядит. Для одного года потребуется уже 365 запросов. Тогда проще все вычитать одним запросом и все агрегировать на стороне приложения. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.12.2019, 17:40 |
|
QuestDB - новая СУБД для хранения time series данных
|
|||
---|---|---|---|
#18+
mayton, Отлично! Если есть время и настроение давайте что нибудь сообразим. Вы мне подкиньте структуры и типы запросов, а я туда подходящих данных на генерю и попробуем туда—сюда ... |
|||
:
Нравится:
Не нравится:
|
|||
06.12.2019, 17:41 |
|
QuestDB - новая СУБД для хранения time series данных
|
|||
---|---|---|---|
#18+
bluestreak mayton, Отлично! Если есть время и настроение давайте что нибудь сообразим. Вы мне подкиньте структуры и типы запросов, а я туда подходящих данных на генерю и попробуем туда—сюда Кстати. Ты материализованные представления создаёшь? Вот посчитал я арифметическое среднее и средне-квадрат отклонение для целой сериии. Жаль терять результат. Куда его сохранить? ... |
|||
:
Нравится:
Не нравится:
|
|||
06.12.2019, 17:59 |
|
QuestDB - новая СУБД для хранения time series данных
|
|||
---|---|---|---|
#18+
mayton, Пока нет, но можно сделать легко. Есть вот это пока: Код: plaintext 1. 2. 3.
... |
|||
:
Нравится:
Не нравится:
|
|||
06.12.2019, 18:04 |
|
QuestDB - новая СУБД для хранения time series данных
|
|||
---|---|---|---|
#18+
Leonid Kudryavtsev, автор х.з. я не специалист, https://ru.tradingview.com/ на вход online поток данных (минутки, пятиминутки) с рынка на выходе история + агрегация онлайн объединения истории + новые данных и онлайн агрегация Но опять таки, нужно помнить, что агрегация это не тупое суммирование, а должна подчиняться правилам. Вроде из минуток дни собираются уже хитрым образом. Аналогично недели. Сплиты акций и пр. и пр. Ну обычно собирается ордер бук на каждый чих с размеры по вертикали и цены по горизонтали и на это считают VWap. В QuestDB я как раз сделал все функции как плагины, свою написать довольно просто на Java или другом JVM языке. Даже можно код функции оставить в своём проекте автор 50 тысяч символов Возможно у Пентагона компьютеры с 50 тыс. ядер и существуют, но это как-то перебор ))) Сам присутствовал, когда "агрегатор" сломался при попытке залить за одну операцию >150 тысяч символов, банально одни только акторы для символов сожрали 2Gb heap. Какой-то хитрый рынок, где символов безумно много, но они маленькие Поэтому даже идея наплодить столько файлов, сколько символов - и то выглядит немного нетрадиционно, а уж сколько символов = столько ядер - утопия. Я не это имел ввиду. Если есть 10 серверов к примеру с 36 ядрами каждый, то можно допустить что одновременно можно считать 360 символов без всякой координации между этими вычислениями. Затем 360 символов в следущей группе итд, 139 груп. Интересно посмотреть сколько времени один символ займёт (7.5м это очень мало, для примера на моем перегретом лаптопе 10м «агрегируются» за 0.22с, ок, более сложная формула добавит что-то но я думаю воткнуть символ в секунду это вполне реалистично) Затем посмотреть что система может выполнить запрос по двум символам одновременно за время одного. Из этого вытекает 139с :) Неплохо для 139 триллионов записей :Р ... |
|||
:
Нравится:
Не нравится:
|
|||
06.12.2019, 18:27 |
|
QuestDB - новая СУБД для хранения time series данных
|
|||
---|---|---|---|
#18+
В timeseries не силен, т.ч. мнение полного дилетанта. Возможно пишу бред. 1. Документации типа reference не нашел. Tutorial бегло просмотрел, но мало чего понял. Даже описание синтаксиса SELECT'а не увидел 2. Для реальных приложений, явно стандартного набора SUM, AVG, COUNT хватать не должно. Т.е. на мой взгляд, с учетом того, что система Open Source и написана на Java (?), должна быть документация (чего вообще не увидел) насколько легко можно реализовывать и встраивать свои функции УЖЕ ОТВЕТИЛИ. СПАСИБО 3. Поддержка TimeZone. Для Time Series СУБД на мой взгляд, нормальная (отсутствующая в обычных базах) поддержка такого понятие как time, быть должно Подозреваю, "обычные" СУБД даже с задачей посчитать avg/min/max по дню в таймзоне биржи на которой листинг уже справятся через одно место. А если день считать с момента открытия и до момента закрытия биржи, то и подавно. При этом за 15 лет время работы биржи могло и поменяться Аналогично понятие неделя, год, месяц.... Не всегда год начинается 1 января в 0:00, он может начаться и 11 января в 9:00 (первый рабочий день). При этом, если мы говорим об интервале времени в десятки лет, данные правила могли и меняться со временем Есть ли какая поддержка для такой работы с датами/временем в Вашей СУБД ? 4. Не очень понятно, как работают(должны работать) JOIN двух и более time series. Вообще, отличает ли СУБД join'ы: 1) time series с не time series (пример из туториала соединение справочника датчиков и измерений) 2) join time series с time series одинаковой размерности 3) join двух time series с разными размерностями, приводить размерность одних тайм серий к другим Например есть тайм серия минутных баров, есть времени работы биржи, есть сплит акций Мы хотим выбрать данные за 2015 год и получить максимальную цену на каждый день, на момент закрытия биржи, при этом с учетом сплита который произошел 01.03.2015 9:00. (т.е. цену до 01.03.2015 9:00 нужно умножить в два раза) Как должны выглядеть таблицы и какой должен быть запрос? Техническое убрал под спойлер 1. Хранение информации по котировках. Масштабируемость решения (СУБД все же должна уметь масштабироваться). Если хранить каждый символ в отдельном файле (да еще отдельные колонки bat'а тоже в отдельных файлах!) Кол-во символов в несколько десятков тысяч - мне кажется совершенно нормально даже для уровня одной биржи Т.е. как минимум должна быть проверка и доказательство, что система нормально работает при таком кол-ве файлов-партиций и/или существует какой-то механизм автоматического закрытия/открытия файлов 2. Обновление. Я так понимаю, в лучших традициях FvMas ))), данные хранятся в виде банального массива Для time seriaes баров котировок, это скорее хорошо, чем плохо. Но встает вопрос накладных расходов. Как я понимаю, каждый "активный" символ будет требовать 4 K памяти (страница) * кол_во_колонок_в_баре пусть 50 000 символов * 8 колонок на бар (произвольно) * 8 байт на double * 4 000 байт = всего 12 800 MB для in-memory буферов для активного изменения. Как бы не много, я ожидал большего ))) ... |
|||
:
Нравится:
Не нравится:
|
|||
06.12.2019, 19:48 |
|
QuestDB - новая СУБД для хранения time series данных
|
|||
---|---|---|---|
#18+
На самом деле представляю объем работы, что бы сделать свою СУБД..... офигеть ... |
|||
:
Нравится:
Не нравится:
|
|||
06.12.2019, 19:51 |
|
QuestDB - новая СУБД для хранения time series данных
|
|||
---|---|---|---|
#18+
Leonid Kudryavtsev Не очень понятно, как работают(должны работать) JOIN двух и более time series. Скорее всего - никак. Это не юзкейс таймсерии. В смысловой нагрузке таймсерия это некая ось координат вдоль которой рисуется график измеряемой величины. Как можно джойнить график - непонятно. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.12.2019, 19:57 |
|
QuestDB - новая СУБД для хранения time series данных
|
|||
---|---|---|---|
#18+
Leonid KudryavtsevНа самом деле представляю объем работы, что бы сделать свою СУБД..... офигеть Если специализированную, как у автора, без поддержки UPDATE и DELETE, без транзакций и без полного синтаксиса SQL - не слишком много. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
06.12.2019, 20:03 |
|
QuestDB - новая СУБД для хранения time series данных
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov Leonid KudryavtsevНа самом деле представляю объем работы, что бы сделать свою СУБД..... офигеть Если специализированную, как у автора, без поддержки UPDATE и DELETE, без транзакций и без полного синтаксиса SQL - не слишком много. Удивительный человек, писать может а читать нет. Я вам уже два раза про транзакции и update сказал. Ну ладно, продолжай троллить. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.12.2019, 20:07 |
|
QuestDB - новая СУБД для хранения time series данных
|
|||
---|---|---|---|
#18+
bluestreakЯ вам уже два раза про транзакции и update сказал. Ну так и я о том же: bluestreak— сложность удаления индивидуальных записей, в случае QuestDB — невозможность, данные удаляютя удаляются через партиции — невозможность физического изменения записей; изменения виртуальные и реализуются через select То есть ни DELETE, ни UPDATE - нет. bluestreakДанные полностью атомичны и все чтения полностью изолированы. Причём размер транзакции не ограничен. То есть вся транзакционность сводится к dirty read с полной блокировкой таблицы. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
06.12.2019, 20:20 |
|
QuestDB - новая СУБД для хранения time series данных
|
|||
---|---|---|---|
#18+
Leonid Kudryavtsev На самом деле представляю объем работы, что бы сделать свою СУБД..... офигеть Я думаю что большинство "самодельных" СУБД представляют собой вариации на тему Redis. Key-Value. In-Memory. No ACID. Just atomic. С легкого старта - работает но куда-то улучшить... практически невозможно безе пересмотра всей механики сразу. Я тоже частенько рассеянно думаю над двумя СУБД. Хранилище фактов. Где каждый dataRow будет занимать 1 бит. И колончатое древовидное хранилище где все строки всегда отсортированы. Грубо говоря нет разницы между таблицей и индексом. Думаю я над этими СУБД по 2-3 минуты в день на сон грядущий. И написал я по ним ровно 1 файл README.md ... |
|||
:
Нравится:
Не нравится:
|
|||
06.12.2019, 20:21 |
|
QuestDB - новая СУБД для хранения time series данных
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov То есть ни DELETE, ни UPDATE - нет. Яж говорю. Хадуп-Хадупище Только в бедной memory. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.12.2019, 20:23 |
|
QuestDB - новая СУБД для хранения time series данных
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov То есть вся транзакционность сводится к dirty read с полной блокировкой таблицы. Бред. Чтение и запись QuestDB это share nothing система. Чтение никогда и ни кем не блокируется. Новый персональный рекорд по прыжкам к умозаключениям. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.12.2019, 20:28 |
|
QuestDB - новая СУБД для хранения time series данных
|
|||
---|---|---|---|
#18+
mayton Leonid Kudryavtsev Не очень понятно, как работают(должны работать) JOIN двух и более time series. Скорее всего - никак. Это не юзкейс таймсерии. В смысловой нагрузке таймсерия это некая ось координат вдоль которой рисуется график измеряемой величины. Как можно джойнить график - непонятно. Как раз таки юзкейс. 1) Разные датчики Расходомер (скорость потока) + датчик температуры / давления. Нужно получить объем. Датчики стоят на разных агрегатах и выдают данные с разной периодичностью 2) Как минимум технологический юзкейс. Банальные bitmap index'ы в обычных СУБД. Для Time Series должны работать просто превосходно. Т.ч. например сделать генератор (итератор), который из обычной не time series таблички с датами вида (start_date, end_date) сделает time series нужной размерности (пусть даже минутку), а дальше.... все условия сведутся просто к одновременному проходу по 2(или более) time series с передачей в ф-цию обработчик значения из всех time series или банальный filter. Иначе запросы объединения интервальных/историчных данных на SQL - "мать, мать, мать.... привычно ответило эхо" Даже чисто такой движок, просто был бы не заменим для любой системы, где приходится работать с историческими данными. (только не понятно, как его встроить/использовать в существующих экосистемах) Бизнес-кейсов просто миллион можно придумать. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.12.2019, 20:30 |
|
QuestDB - новая СУБД для хранения time series данных
|
|||
---|---|---|---|
#18+
bluestreakЧтение и запись QuestDB это share nothing система. Чтение никогда и ни кем не блокируется. От такого определения "shared nothing" моя челюсть упала на пол. Ок, чтение не блокируется. Как у тебя взаимодействуют два коннекта, один из которых добавляет миллион записей, а второй читает тысячу последних? Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
06.12.2019, 20:41 |
|
QuestDB - новая СУБД для хранения time series данных
|
|||
---|---|---|---|
#18+
Leonid Kudryavtsev В timeseries не силен, т.ч. мнение полного дилетанта. Возможно пишу бред. 1. Документации типа reference не нашел. Tutorial бегло просмотрел, но мало чего понял. Даже описание синтаксиса SELECT'а не увидел Не бред. Мы только недавно начали документацию писать, доделаем. Вы на это смотрели? https://www.questdb.io/docs/select И joins: https://www.questdb.io/docs/join 3. Поддержка TimeZone. Для Time Series СУБД на мой взгляд, нормальная (отсутствующая в обычных базах) поддержка такого понятие как time, быть должно Поддержка времени заключается в двух типах, Date и Timestamp. Date это на самом деле время до миллисекунды а Timestamp до микросекунды. Все хранится в UTC. Внутри системы есть база данных с зонами, есть функция to_timestamp(), конвертирует строку в данном формате. Формат поддерживает тайм зоны. Искать диапазоны можно так Код: plaintext 1.
Найдёт все за март, ... но, этот синтакс не поддерживает зоны.. нужно исправить :( Подозреваю, "обычные" СУБД даже с задачей посчитать avg/min/max по дню в таймзоне биржи на которой листинг уже справятся через одно место. А если день считать с момента открытия и до момента закрытия биржи, то и подавно. При этом за 15 лет время работы биржи могло и поменяться Аналогично понятие неделя, год, месяц.... Не всегда год начинается 1 января в 0:00, он может начаться и 11 января в 9:00 (первый рабочий день). При этом, если мы говорим об интервале времени в десятки лет, данные правила могли и меняться со временем Есть ли какая поддержка для такой работы с датами/временем в Вашей СУБД ? Это по сути пользовательский календарь? Прямой поддержки нет, но можно функцию сделать, например это существующая группировка: Код: plaintext 1.
Это по дням в григорианском календаре и UTC. 1d это встроенная функция округления, но можно попробовать Код: plaintext 1.
? обязательно отвечу на последний вопрос! ... |
|||
:
Нравится:
Не нравится:
|
|||
06.12.2019, 21:12 |
|
QuestDB - новая СУБД для хранения time series данных
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov bluestreakЧтение и запись QuestDB это share nothing система. Чтение никогда и ни кем не блокируется. От такого определения "shared nothing" моя челюсть упала на пол. Ок, чтение не блокируется. Как у тебя взаимодействуют два коннекта, один из которых добавляет миллион записей, а второй читает тысячу последних? Чтение последних 1000 записей выглядит так: Код: plaintext 1.
Если запрос начал выполняться до того как писатель вызвал commit() то вернутся 1000 записей до начала писания первой записи этого миллиона. В независимости от текущего положения и состояния писателя. Если запрос после commit() — сами понимаете, последняя 1000 от добавленного миллиона. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.12.2019, 21:17 |
|
|
start [/forum/topic.php?fid=35&msg=39899282&tid=1552167]: |
0ms |
get settings: |
9ms |
get forum list: |
12ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
29ms |
get topic data: |
7ms |
get forum data: |
2ms |
get page messages: |
60ms |
get tp. blocked users: |
1ms |
others: | 13ms |
total: | 139ms |
0 / 0 |