powered by simpleCommunicator - 2.0.18     © 2024 Programmizd 02
Map
Форумы / Сравнение СУБД [игнор отключен] [закрыт для гостей] / MySQL против MS SQL EXPRESS : что выбрать по нагрузке на диск / процессор при записи в БД
16 сообщений из 16, страница 1 из 1
MySQL против MS SQL EXPRESS : что выбрать по нагрузке на диск / процессор при записи в БД
    #39930270
kotyara12
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день!

Есть сравнительно небольшая база данных. Ну как небольшая - сейчас 35 Mb, ориентировочно до 500 Mb (старые данные просто автоматом удаляются ночью через несколько дней после записи).

Работает совместно с многопоточным приложением на слабеньком ПК - Celeron N2840 4Gb RAM. Менять его не планируется. Разве что HDD на SSD поменять.

Раньше была база данных сделана на sqlLite, но перестало хватать ее возможностей.

Переделал на MySQL. MySQL при работе проги стал грузить процессор на 50-60% и "шуршит" диском постоянно.

Основная операция, которая грузит mysql - запись в три таблицы. В одну из них запись происходит не чаще 1 раз в секунду, а основное время - гораздо реже. Не думаю, что она является причиной загрузки процессора.

А вот в другую - может быть и до несколько десятков записей в секунду:

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
CREATE TABLE user_projects (
  user_id BIGINT NOT NULL ,
  site_id INT NOT NULL ,
  proj_id BIGINT NOT NULL ,
  send_queue DATETIME NULL ,
  send_time DATETIME NULL ,
  cats_state TINYINT NOT NULL DEFAULT 0 ,
  cats_mode TINYINT NOT NULL DEFAULT 0 ,
  cats_value VARCHAR(255) NULL ,
  words_state TINYINT NOT NULL DEFAULT 0 ,
  words_mode TINYINT NOT NULL DEFAULT 0 ,
  words_plus VARCHAR(255) NULL ,
  words_minus VARCHAR(255) NULL ,
  CONSTRAINT pk_user_projects_id PRIMARY KEY (user_id, proj_id) ,
  CONSTRAINT fk_user_projects_user FOREIGN KEY (user_id) REFERENCES user_list (user_id) ,
  CONSTRAINT fk_user_projects_site FOREIGN KEY (site_id) REFERENCES site_list (id) ,
  CONSTRAINT fk_user_projects_proj FOREIGN KEY (proj_id) REFERENCES site_projects (id) ,
  INDEX idx_user_projects_queue (send_queue ASC) VISIBLE ,
  INDEX idx_user_projects_send (send_time ASC) VISIBLE
) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;



Ну еще и лог программы - тоже до нескольких десятков записей в секунду:

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
CREATE TABLE bot_log (
  id INT NOT NULL AUTO_INCREMENT ,
  id_thread INT NOT NULL ,
  msg_date TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ,
  msg_type INT NOT NULL ,
  msg_text TEXT NULL ,
  CONSTRAINT pk_bot_log_id PRIMARY KEY (id) ,
  CONSTRAINT fk_bot_log_thread FOREIGN KEY (id_thread) REFERENCES bot_threads (id)
) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;



Теперь собственно вопрос: имеет ли смысл заменить СУБД на MS SQL Express?
По возможностям ее вроде бы должно хватить.
Конечно, я понимаю, что можно просто "взять и попробовать", но на это уйдут драгоценные дни.
...
Рейтинг: 0 / 0
MySQL против MS SQL EXPRESS : что выбрать по нагрузке на диск / процессор при записи в БД
    #39930278
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kotyara12,

А точно нужны все эти FOREIGN KEY в таких количествах? Особенно в таблице логов?
Я бы предложил от их части избавиться.

Какой движок таблиц?
Чему равны параметры innodb_flush_log_at_trx_commit и innodb_file_per_table?
...
Рейтинг: 0 / 0
MySQL против MS SQL EXPRESS : что выбрать по нагрузке на диск / процессор при записи в БД
    #39930292
kotyara12
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
miksoftА точно нужны все эти FOREIGN KEY в таких количествах? Особенно в таблице логов?
Я бы предложил от их части избавиться.

принимается. "на автомате" сделал )) часть уберу

miksoftКакой движок таблиц?
InnoDB, по умолчанию

miksoftЧему равны параметры innodb_flush_log_at_trx_commit и innodb_file_per_table?

innodb_flush_log_at_trx_commit = 1
innodb_file_per_table = ON
...
Рейтинг: 0 / 0
MySQL против MS SQL EXPRESS : что выбрать по нагрузке на диск / процессор при записи в БД
    #39930294
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kotyara12имеет ли смысл заменить СУБД на MS SQL Express?

Поскольку ты не знаешь ни того ни другого, то это замена шила на мыло.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
MySQL против MS SQL EXPRESS : что выбрать по нагрузке на диск / процессор при записи в БД
    #39930297
kotyara12
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry Sibiryakov, ну так я и спрашиваю знающих людей )))
...
Рейтинг: 0 / 0
MySQL против MS SQL EXPRESS : что выбрать по нагрузке на диск / процессор при записи в БД
    #39930298
kotyara12
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry Sibiryakov

Поскольку ты не знаешь ни того ни другого, то это замена шила на мыло.

Вот не понимаю я таких ответов.
Я вполне допускаю, что я много и много не знаю. Я вполне допускаю что Ваши знания в 10, 100, 1000, 100500 раз больше моих.
Так поделитесь своими значениями, подскажите... Разве это повод для язвительных комментариев? В чем проблема-то?
...
Рейтинг: 0 / 0
MySQL против MS SQL EXPRESS : что выбрать по нагрузке на диск / процессор при записи в БД
    #39930300
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kotyara12
innodb_flush_log_at_trx_commit = 1
1 - это наихудший вариант с точки зрения быстродействия.
Попробуйте поставить 0.
...
Рейтинг: 0 / 0
MySQL против MS SQL EXPRESS : что выбрать по нагрузке на диск / процессор при записи в БД
    #39930303
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kotyara12Так поделитесь своими значениями, подскажите...

Подсказываю: надо изучать выбранную СУБД, её инструменты настройки производительности и
обнаружения узких мест. Потом скурпулёзно применять вторые с целью понять как и куда
применить первые. Это многодневная нудная работа. Лечить по фотографии, как начал miksoft
можно, конечно, но результат не гарантирован.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
MySQL против MS SQL EXPRESS : что выбрать по нагрузке на диск / процессор при записи в БД
    #39930311
kotyara12
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
miksoft
Попробуйте поставить 0.

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

Но все-таки, возвращаясь к собственно исходному вопросу, может для такого слабого проца на MS SQL переделать базу?
...
Рейтинг: 0 / 0
MySQL против MS SQL EXPRESS : что выбрать по нагрузке на диск / процессор при записи в БД
    #39930315
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kotyara12
может для такого слабого проца на MS SQL переделать базу?
На этот вопрос не может быть ответа "да" или "нет".
Любую СУБД надо настраивать под вашу конкретную задачу.

С учетом того, то нагрузка довольно низкая, предлагаю оставить как есть и не тратить время на другие СУБД.
...
Рейтинг: 0 / 0
MySQL против MS SQL EXPRESS : что выбрать по нагрузке на диск / процессор при записи в БД
    #39930722
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kotyara12

Раньше была база данных сделана на sqlLite, но перестало хватать ее возможностей.

Переделал на MySQL. MySQL при работе проги стал грузить процессор на 50-60% и "шуршит" диском постоянно.

Основная операция, которая грузит mysql - запись в три таблицы. В одну из них запись происходит не чаще 1 раз в секунду, а основное время - гораздо реже. Не думаю, что она является причиной загрузки процессора.

А вот в другую - может быть и до несколько десятков записей в секунду:

Ваша основная проблема IMHO - это морально старое железо. Celeron/4G даже не продается на барахолках.
Там уже лежит техника Б/У но следующего поколения. Чисто технически я-бы вам предложил купить за 200$
новое железо. И даст бох - еще 5 лет протяните. +Надо памяти побольше т.к SQLite срёт в MemoryMap операционки.
А это есть виртуальная прослойка между диском и памятью.

Я считаю что вы больше потратите времени и нервов (на 1000$) просто бегая по форумам и проверяя ненужные
советы.

То что вы переделали на MySQL - требует пояснения по дизайну. В MySQL - это сборный конструктор типа LEGO
и надо смотреть какой тип "engine" вы выбрали для хранения. И дальше делая step-by step наблюдать как растёт
или деградирует производительность.

По поводу 1 раз или 10 раз в секунду. Это черепашья скорость. Вообще ниочем. Для современных
DBMS - 500 000 inserts / per second это уже норма.

Возможно проблему создает неудачный дизайн БД. И избыточное индексирвоание. Тоесть вы слишком аккуратно тестируете и нормализуете. А в вашей
задаче можно было-бы ввести легкие staging-tables (только для загрузки без индексов и ограничений)
и раз в в сутки синкать их с основной нормализованной моделью. Это из "best practices" по ETL я рассказываю.

По поводу загрузки CPU. У вас всё настолько запущено что CPU может быть просто следствием неудачной модели
(6 индексов) и при прочих равных условиях вам бы его хватало.
...
Рейтинг: 0 / 0
MySQL против MS SQL EXPRESS : что выбрать по нагрузке на диск / процессор при записи в БД
    #39931122
Фотография ScareCrow
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
explain analyze
...
Рейтинг: 0 / 0
MySQL против MS SQL EXPRESS : что выбрать по нагрузке на диск / процессор при записи в БД
    #39931128
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ScareCrow
explain analyze

Это не даст ответов на вопросы автора. Его вопрос - хай-левел архитектуры и подходить к нему с позиции explain
это слишком поздно. Поздно пить боржоми. Тем более что у него дохлый HDD и камень устарел на 10 лет.
...
Рейтинг: 0 / 0
MySQL против MS SQL EXPRESS : что выбрать по нагрузке на диск / процессор при записи в БД
    #39931303
kotyara12
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Камень относительно свежий. Да, celeron, но относительно свежий, примерно 3-х летней давности.
И, оказалось, проблема была не в нем.
А как всегда в моих кривых руках. Один из SELECT-ов выполнялся аж 9 секунд, а с учетом что их много - нагрузка на sql сервер была значительной. Поправил так, чтобы было 0,01 сек и все стало нормально :-)
...
Рейтинг: 0 / 0
MySQL против MS SQL EXPRESS : что выбрать по нагрузке на диск / процессор при записи в БД
    #39931304
kotyara12
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ScareCrow
explain analyze

опаньки !!! не знал, не знал...
очень полезная штука.
просто огромное спасибо!!!
...
Рейтинг: 0 / 0
MySQL против MS SQL EXPRESS : что выбрать по нагрузке на диск / процессор при записи в БД
    #39931344
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну дай бох.
...
Рейтинг: 0 / 0
16 сообщений из 16, страница 1 из 1
Форумы / Сравнение СУБД [игнор отключен] [закрыт для гостей] / MySQL против MS SQL EXPRESS : что выбрать по нагрузке на диск / процессор при записи в БД
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали тему (1): Анонимы (1)
Читали форум (2): Анонимы (1), Yandex Bot 7 мин.
Пользователи онлайн (12): Анонимы (9), Bing Bot, Yandex Bot 1 мин., CerebroSQL 1 мин.
x
x
Закрыть


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