Как исправить медленную mysql скорость записи - PullRequest
1 голос
/ 18 февраля 2020

У меня есть веб-сайт системы школьных баллов, созданный с использованием codeigniter с MySQL в качестве базы данных. Проблема в том, что в таблице точек много данных, и запись выполняется очень медленно.

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

Как мне заставить ее работать быстрее? Я уже разделяю свой веб-сервер и MySQL сервер. Мой сервер базы данных теперь имеет больше ресурсов в виде ЦП и ОЗУ.

Когда пользователи получают доступ к /dashboard, php подсчитывает все очки пользователя. С этим проблем нет.

Однако при доступе к /points и записи в базу данных она очень медленная.

Мне было интересно, смогу ли я сделать это так

----------points table--------

|username |points_a_sum|points_b_sum|points_c_sum|

user_a    |     33     |      0     |     15

user_b    |     15     |      12    |      0

Вместо:

username|type|points|date_added

user_a | points_a | 10 | date here

user_b | points_a | 5 | date here

user_a | points_c | 15 | date here

user_a | points_a | 8 | date here

user_b | points_b | 12 | date here

Но проблема с непосредственным перечислением суммы, мое приложение не может отследить, когда пользователь получает эти конкретные баллы.

Мое приложение write-heavy.

Есть предложения?

Explain

Попробуйте получить размер индекса с помощью этого запроса (https://dataedo.com/kb/query/mysql/list-of-tables-by-the-size-of-their-indexes ):

select table_schema as database_name,
       table_name,
       round(index_length/1024/1024,2) as index_size
from information_schema.tables
where table_type = 'BASE TABLE'
      and table_schema not in ('information_schema', 'sys',
                               'performance_schema', 'mysql')
       -- and table_schema = 'your database name'
order by index_size desc;

index

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...