powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Как увеличить скорость записи в таблицу?
11 сообщений из 11, страница 1 из 1
Как увеличить скорость записи в таблицу?
    #39823239
Molasar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Всем привет!

CentOS7 + MariaDB10.3.
Сервис пишет в БД сообщение при его появлении. Удивила низкая скорость записи - около 30 записей в секунду, обычный INSERT.

Провёл эксперимент.
Одна таблица, одно поле id (autoincrement).
С клиентской машины в той же сети в цикле записываю поочередно 1000 записей.
Скорость такая же около 30 записей в секунду.
Пакетная запись - это крайний вариант, ждать промежутки времени для создания пакета в моём случае плохо.

Как ускорить запись в таблицу?

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
public class MariaDBTest {
    
    private static final int nEvents = 1000;
    
    private static final String url 
            = "jdbc:mariadb://192.168.0.158:3306/scjms_db";
    private static final String driver = "org.mariadb.jdbc.Driver";
    private static final String user = "root";
    private static final String password = "root";
    private static Connection connection = null;
    private static Statement statement = null;
    
    public static void main(String[] args) 
            throws SQLException, ClassNotFoundException {
        Class.forName(driver);
        connection = DriverManager.getConnection(
                url, user, password);
        statement = connection.createStatement();
        
        String sqlQuery = "insert into event_entity () values ()";
        
        long start = System.currentTimeMillis();
        for (int i = 0; i < nEvents; i++) {
            statement.execute(sqlQuery);
        }
        System.out.println("Saving of " + nEvents + " events takes " 
                        + (System.currentTimeMillis() - start));      
        
        statement.close();
        connection.close();
    }

}
...
Рейтинг: 0 / 0
Как увеличить скорость записи в таблицу?
    #39823256
Фотография Дегтярев Евгений
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Molasar,

по умолчанию включен режим автокомит и каждый запрос выполняется в отдельной транзакции
надо быстрее - управляем транзакциями вручную и пишем несколько записей в одной транзакции
...
Рейтинг: 0 / 0
Как увеличить скорость записи в таблицу?
    #39823273
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Как увеличить скорость записи в таблицу?
    #39823305
Molasar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дегтярев ЕвгенийMolasar,

по умолчанию включен режим автокомит и каждый запрос выполняется в отдельной транзакции
надо быстрее - управляем транзакциями вручную и пишем несколько записей в одной транзакции
Я понимаю, что можно поднастроить базу, но 30 сек запись 1000 строк в таблицу с 1 полем в базу с настройками по умолчанию это норм? Или я что то не понимаю?
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
CREATE TABLE t1 (c1 INT);
DELIMITER // 
CREATE PROCEDURE myinsert() begin
DECLARE i INT DEFAULT 1; 
WHILE i<1001 DO
INSERT INTO scjms_db.t1 (c1) Values (i);
SET i=i+1; 
END WHILE;
end //
CALL myinsert();


время выполнения - 30 сек.
...
Рейтинг: 0 / 0
Как увеличить скорость записи в таблицу?
    #39823334
Molasar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
miksoft https://dev.mysql.com/doc/refman/5.7/en/innodb-parameters.html#sysvar_innodb_flush_log_at_trx_commit
В какое значение установлен?
все настройки по умолчанию. AutoCommit enable через MySql WorkBench
...
Рейтинг: 0 / 0
Как увеличить скорость записи в таблицу?
    #39823400
Molasar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Локально на моей машине MariaDB по умолчанию пишет 1000 строк за 0.468 сек.
Видно проблема где-то в настройках сервера. Будем смотреть.
Это уже 3-я тема "Администрирование")))
...
Рейтинг: 0 / 0
Как увеличить скорость записи в таблицу?
    #39823791
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MolasarВидно проблема где-то в настройках сервера.Я же дал вам конкретную настройку. Вы ее пробовали изменить?
MolasarС клиентской машины в той же сети в цикле записываю поочередно 1000 записей.А почему в цикле, а не все сразу?
...
Рейтинг: 0 / 0
Как увеличить скорость записи в таблицу?
    #39823878
Molasar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
miksoftMolasarВидно проблема где-то в настройках сервера.Я же дал вам конкретную настройку. Вы ее пробовали изменить?
MolasarС клиентской машины в той же сети в цикле записываю поочередно 1000 записей.А почему в цикле, а не все сразу?
innodb_flush_log_at_trx_commit = 1
Но менять не хочется, из-за отказоустойчивости.

В цикле поочередно - это эмуляция реальной работы. Сообщения появляются время от времени и сохранять их надо по мере появления, пакетная запись не очень подходит. Это крайний вариант.
...
Рейтинг: 0 / 0
Как увеличить скорость записи в таблицу?
    #39823889
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Molasar,

Тогда меняйте диск на диск с низкой задержкой, SSD NVME или Optane какой-нибудь.
...
Рейтинг: 0 / 0
Как увеличить скорость записи в таблицу?
    #39823900
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Или дисковый контроллер с кэшем на запись и с батарейкой.
...
Рейтинг: 0 / 0
Как увеличить скорость записи в таблицу?
    #39823909
Фотография ScareCrow
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторВидно проблема где-то в настройках сервера. Будем смотреть.

первоманс схема в помощ.
...
Рейтинг: 0 / 0
11 сообщений из 11, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Как увеличить скорость записи в таблицу?
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]