Уважаемые пользователи Голос!
Сайт доступен в режиме «чтение» до сентября 2020 года. Операции с токенами Golos, Cyber можно проводить, используя альтернативные клиенты или через эксплорер Cyberway. Подробности здесь: https://golos.io/@goloscore/operacii-s-tokenami-golos-cyber-1594822432061
С уважением, команда “Голос”
GOLOS
RU
EN
UA
arcange
7 лет назад

GolosSQL - Обновление 8 - Улучшение производительности

GolosSQL - это публичная база данных MS-SQL со всеми данными блокчейна внутри.

Предыдущие посты:

Что нового?

GolosSQL - русский брат SteemSQL. Те из вас, у кого есть аккаунт в Стим, знают, что весь последний месяц количество пользователей лавинообразно увеличивалось. В результате этого активность на блокчейне испытала такой же прирост. И высказанное мной беспокойство по поводу способности SteemSQL ежедневно поглощать растущую массу данных оказалось пророческим.

Взгляните на следующий график, который отображает количество транзакций в день в блокчейне Steemit, и вы увидите, что количество транзакций, которое необходимо обрабатывать, утроилось (+199%) за последние 30 дней.

В случаях с количеством постов и комментариев это означает соответственное увеличение на 315% и 297%.
А количество апвоутов более чем удвоилось, увеличившись на 112%.

Постепенно показатели введения данных в базу данных ухудшились. В конце концов SteemSQL стал плохо справляться со всеми многочисленными обновлениями, генерируемыми каждой транзакцией. В некоторых случаях я обнаруживал задержку в 24 часа и более по сравнению с данными, имеющимися в блокчейне.

Поэтому я решил взять быка за рога и провел тщательный анализ, который привел к нескольким изменениям в базе данных и полной реорганизации инжектора базы данных.

1. Изменения в базе данных

В основном они касаются индексов базы данных. Я обнаружил, что было создано множество индексов для улучшения производительности некоторых запросов, но в итоге выяснилось, что эти индексы использовались редко.

Поэтому я проанализировал индексы базы данных один за другим: некоторые из них удалил, другие - изменил.

2. Изменения в инжекторе базы данных

Инжектор базы данных - это процесс, ответственный за чтение каждого блока блокчейна и распределение транзакций в разные таблицы базы данных.

Я поработал над оптимизацией этих процессов, отделив инъекцию транзакций от обновления затронутых нетранзакционных таблиц (таблицы Accounts и Comments).

Эти процессы теперь выполняются параллельно, благодаря оптимизированной многопоточной реализации различных задач.

Результат

Благодаря проделанной работе я смог сократить общее время обработки в 3 раза!

Теперь я перенес эти улучшения также и в GolosSQL, и сейчас он без проблем может совладать с таким ростом количества транзакций.

Будем надеяться, что в один прекрасный день мы увидим 1 000 000 транзакций в день. Это то, чего я действительно желаю платформе Голос!

Спасибо за чтение!


Все выплаты с этого поста пойдут на поддержание работы GolosSQL. Спасибо за вашу поддержку.

Спасибо @rusteemitblog за вычитку этого поста перед публикацией.


Голосуйте за меня в качестве делегата

Вы также можете проголосовать прямо с платформы Голос здесь. Для этого нужно проделать следующее. Каждый голос важен. Спасибо !

0
812.661 GOLOS
Комментарии (14)
Сортировать по:
Сначала старые