powered by simpleCommunicator - 2.0.58     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / MySQL [игнор отключен] [закрыт для гостей] / InnoDB - тормоза страшнючие - что не так?
25 сообщений из 60, страница 1 из 3
InnoDB - тормоза страшнючие - что не так?
    #32431593
BigHarry
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В пакетном файле создается таблица с типом InnoDB и в нее вставляется шесть тысч строк:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
CREATE TABLE tov_zena1 (
  Kod char( 4 ) NOT NULL default '0',
  Data date NOT NULL default '0000-00-00',
  Price int( 6 ) unsigned default '0',
  ShopStamp char( 1 ) NOT NULL default '0',
  KEY Kod (Kod)
) TYPE=InnoDB COMMENT='цены товаров';

INSERT INTO tov_zena2 VALUES( "1070 ",  "2004 - 01 - 01 ",  "290 ",  "1 ");
INSERT INTO tov_zena2 VALUES( "3013 ",  "2004 - 01 - 01 ",  "290 ",  "1 ");
INSERT INTO tov_zena2 VALUES( "3014 ",  "2004 - 01 - 01 ",  "290 ",  "1 ");
INSERT INTO tov_zena2 VALUES( "1066 ",  "2004 - 01 - 01 ",  "290 ",  "1 ");
...

Вставка этих срок занимает около 10 минут.
Если делать тоже самое, но у таблицы задать тип MyIsam - то процесс занимает всего секунд пять-шесть...
Если делать через транзакцию (BEGIN/COMMIT) - то и в InnoDB эта процедура занимает мало времени - секунд шесть-семь...
Так и должно быть?
Что можно подкрутить в настройках (кроме autocommit=0), что бы InnoDB без транзакций не тормозили?
...
Рейтинг: 0 / 0
InnoDB - тормоза страшнючие - что не так?
    #32431680
Фотография Хрен
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Прежде всего innodb чувствителен к первичному ключу, так что его лучше задавать явно.

Во вторых:
http://www.innodb.com/ibman.php#Insert.buffering
Так что лучше увеличить buffer pool для него.
...
Рейтинг: 0 / 0
InnoDB - тормоза страшнючие - что не так?
    #32432318
BigHarry
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Первичного ключа в создаваемой таблице нету.
Установка innodb_buffer_pool_size=180M, innodb_additional_mem_pool_size=45 - тоже не повлияла на результат...
Только вставка BEGIN/COMMIT дает нужную скорость...
...
Рейтинг: 0 / 0
InnoDB - тормоза страшнючие - что не так?
    #32432588
BigHarry
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Установил четверку - там такая-же картина...
Вот мазафака - приплыли, называется - хочешь транзакции и ключи - в нагрузку тормоза получи !!! Переписывать теперь что-ли - везде втыкать бегин/комит - запара...
...
Рейтинг: 0 / 0
InnoDB - тормоза страшнючие - что не так?
    #32433239
Фотография Хрен
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если первиного ключа нет он будет добавлен неявно.
...
Рейтинг: 0 / 0
InnoDB - тормоза страшнючие - что не так?
    #32433255
Stellar.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вот мазафака - приплыли, называется - хочешь транзакции и ключи - в нагрузку тормоза получи !!! Переписывать теперь что-ли - везде втыкать бегин/комит - запара...
А помнишь, ты мне доказывал, что MySQL круче всех остальных СУБД ибо быстрее?
А я отвечал, что как только там будут реализованы те фичи, что есть в серьезных СУБД, она тут же потеряет это единственное преимущество?
А ты не верил, ругался и т.д.
Так проблема именно в том, что в нашем мире чудес не бывает: хочешь функциональность -- плати скоростью.

Кстати, в порядке мозгового штурма: А не поставить ли Постгрес, где все это (и не только) давно уже есть и заоптимизировано по самое нехочу?
...
Рейтинг: 0 / 0
InnoDB - тормоза страшнючие - что не так?
    #32433290
BigHarry
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Stellar.
Тормоза пропрадают, кады ставишь BEGIN/COMMIT.
Просто - для меня это дополнительный гемор - все модули, где идет вставка кучи строк - обрамлять BEGIN/COMMIT. Блин - надо было сразу вставлять - ведь мускуль совершенно спокойно проглатывает эту конструкцию даже на таблах, которые не поддерживают данные операции!!!
Если-б раньше это сделал - то мог бы совершенно спокойно счаз поменять тип таблиц... А насчет скорости - я и счаз скажу - муся быстра, как никто другой!
Воткну бегин/комит - и получу нужный результат. Причем - часть таблиц я могу совершенно спокойно оставить MyIsam - мускулю не обязательно, что бы в БД таблицы были одного типа - это тоже удобно!
По поводу постгря - есть некоторые моменты - во первых - настораживает то, что по дефолту - количество устанавливаемых одновременных подключений у него какое-то маленькое - ресурсы он что-ли жрет, или разработчики в угоду тем, у кого машинки слабые так сделали? Во вторых - с кодировками траблы - виндовая кодировка у него как-то не правильно работает - счаз точно не помню - вроде - большие и малые буквы у него не правильно сортируются, толи какую-то одну букву клинит - в обчем - где-то был облом (а может - руки.sys). Ну и в добавок - под винды - нормальной версии нет, то что есть - какой-то нестабилеж - для изучения и девелопинга - она есчо годиться, но держать рабочую базу на ней мне страшно.
...
Рейтинг: 0 / 0
InnoDB - тормоза страшнючие - что не так?
    #32433312
Sad Spirit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BigHarryТормоза пропрадают, кады ставишь BEGIN/COMMIT.
Ты не поверишь, но в Постгресе всё точно так же. Просто почему-то когда гоняют бенчмарки это стараются не учитывать...

BigHarryПо поводу постгря - есть некоторые моменты - во первых - настораживает то, что по дефолту - количество устанавливаемых одновременных подключений у него какое-то маленькое - ресурсы он что-ли жрет, или разработчики в угоду тем, у кого машинки слабые так сделали?
настройки по умолчанию таковы, чтобы всё могло запускаться даже на самом помоечном железе. но в свежей версии это поменяли, опять же из-за людей, которые любят гонять бенчмарки с настройками по умолчанию...

BigHarryВо вторых - с кодировками траблы - виндовая кодировка у него как-то не правильно работает
Такое обычно бывает, если кодировки вообще не настраивать.
...
Рейтинг: 0 / 0
InnoDB - тормоза страшнючие - что не так?
    #32433337
Фотография Хрен
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SadSpirit Просто почему-то когда гоняют бенчмарки это стараются не учитывать...

Какие бенчмарки вы имеете в виду?
...
Рейтинг: 0 / 0
InnoDB - тормоза страшнючие - что не так?
    #32433386
Sad Spirit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ХренКакие бенчмарки вы имеете в виду?
Никакие конкретно. Но я несколько раз видел именно такой подход, при большом желании можно поискать в Гугле примеры.
...
Рейтинг: 0 / 0
InnoDB - тормоза страшнючие - что не так?
    #32433392
Фотография Хрен
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Забавно, что создается таблица tov_zena1 а записи добавляются в tov_zena2
...
Рейтинг: 0 / 0
InnoDB - тормоза страшнючие - что не так?
    #32433393
Фотография Хрен
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Что - то у вас с настройками накручено, товарищь..
Я попробовал ваш тест - итак 6000 записей в таблицу с вашей структурой на моем компьютере P4 2.4Ghz 512M RAM:

MyISAM:

time mysql test <g.sql
real 0m0.501s
user 0m0.050s
sys 0m0.060s

Innodb с autocommit ( без BEGIN/COMMIT):

time mysql test <g.sql

real 0m3.116s
user 0m0.090s
sys 0m0.040s

Innodb с BEGIN/COMMIT:
time mysql test <g.sql

real 0m0.486s
user 0m0.060s
sys 0m0.050s

Другими словами myisam и INNODB с BEGIN/COMMIT заливаются примерно с равной скроростью,
INNODB без BEGIN/COMMIT: примерно в 6 раз дольше. То есть на вашей машине должно получаться (в 6 раз дольше чем 5 секунд) - примерно полминуты.

Кстати, что за машина такая?
...
Рейтинг: 0 / 0
InnoDB - тормоза страшнючие - что не так?
    #32434490
BigHarry
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Что-же все-таки с настройками?
Снова сделал тест. Заполняется таблица с 6266 строками.
Без транзакций:
начало - 11:50:33, окончание - 11:59:33, в секунду - 700 записей вставляет.
С транзакциями:
начало - 12:17:14, окончание - 12:17:17, в секунду - вставил все...
Почему такая большая разница?
Машина - PIII-800x512RAM, Win-NT4
MySQL - 4.0.18
Вот настройки:
====================================
skip-locking
skip-name-resolve
skip-grant-tables
skip-bdb

set-variable = key_buffer=256M
set-variable = max_allowed_packet=1M
set-variable = table_cache=256
set-variable = sort_buffer=1M
set-variable = record_buffer=1M
set-variable = myisam_sort_buffer_size=64M
set-variable = thread_cache=8
# Try number of CPU's*2 for thread_concurrency
set-variable = thread_concurrency=8

server-id = 1

log

set-variable = innodb_mirrored_log_groups=1
set-variable = innodb_log_files_in_group=3
set-variable = innodb_log_file_size=5M
set-variable = innodb_log_buffer_size=8M
innodb_flush_log_at_trx_commit=1
innodb_log_archive=0
set-variable = innodb_buffer_pool_size=180M
set-variable = innodb_additional_mem_pool_size=40M
set-variable = innodb_file_io_threads=4
set-variable = innodb_lock_wait_timeout=50
======================================
...
Рейтинг: 0 / 0
InnoDB - тормоза страшнючие - что не так?
    #32436505
BigHarry
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Xpeн ! Поделись мыслями - что у меня не так? Какие у тебя настройки, что всего в шесть раз медленнее получается... Или - у тебя мускуль на юниксах?
...
Рейтинг: 0 / 0
InnoDB - тормоза страшнючие - что не так?
    #32436942
Фотография Хрен
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Что не так?
А вот например:
innodb_flush_log_at_trx_commit=1

Это значит что innodb будет принудительно сбрасывать все логии кэши на диск и делать sync после закрытия каждой транзакции. А вместе с режимом autocommit (когда каждый инсерт неявно оборачивается в свою транзакцию) это приведет к 6000 sync на файловую систему. А это тормоза. Конкретный размер тормозов конечно зависит от ОС, файловой системы и скорости диска, но то что тормоза будут существенными в любом случае - это точно.

Есть еще пара соображений по поводу этого конфига. Написать?
...
Рейтинг: 0 / 0
InnoDB - тормоза страшнючие - что не так?
    #32437104
BigHarryy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Конечно - будь добр - напиши !!!
...
Рейтинг: 0 / 0
InnoDB - тормоза страшнючие - что не так?
    #32437317
Sad Spirit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ХренЧто не так?
А вот например:
innodb_flush_log_at_trx_commit=1

Это значит что innodb будет принудительно сбрасывать все логии кэши на диск и делать sync после закрытия каждой транзакции. А вместе с режимом autocommit (когда каждый инсерт неявно оборачивается в свою транзакцию) это приведет к 6000 sync на файловую систему. А это тормоза. Конкретный размер тормозов конечно зависит от ОС, файловой системы и скорости диска, но то что тормоза будут существенными в любом случае - это точно.


А если этот параметр отключить, то мы теряем ACID, правильно? То есть по нажатию любимой кнопки Reset можем остаться без результатов успешно законченных транзакций? :)

Ну и нахрен тогда этот ваш любимый innodb?
...
Рейтинг: 0 / 0
InnoDB - тормоза страшнючие - что не так?
    #32437375
Фотография Рыжий Кот
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я очень уважаю mysql, но не кажется ли вам что пора переходить на что-нибудь более продвинутое...

...
Рейтинг: 0 / 0
InnoDB - тормоза страшнючие - что не так?
    #32437378
BigHarry
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
То есть по нажатию любимой кнопки Reset можем остаться без результатов успешно законченных транзакций?
Во первых - при нажатии кнопки Reset данные можно потерять не только в хранилище innoDB - но абсолютно в любой другой системе.
Во вторых - если innodb_flush_log_at_trx_commit = 0 - то "InnoDB only writes to the log file and flushes it to disk approximately once per second, or when the log buffer becomes full..." Думаю - что один раз в секунду - вполне секурно, тем более - что УПС стоит...
...
Рейтинг: 0 / 0
InnoDB - тормоза страшнючие - что не так?
    #32437379
Stellar.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вот мы опять вернулись к моему постоу про скорость....

Быть может, все же, поставить Постгрес и получить не только нормальные транзакции, но и CONSTRAINTS, FK, CHECKS и кучу процедурных языков впридачу?

Еще раз: в нашем мире чудес не бывает . М за функциональность всегда приходится платить скоростью.
...
Рейтинг: 0 / 0
InnoDB - тормоза страшнючие - что не так?
    #32437386
BigHarry
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
но не кажется ли вам что пора переходить на что-нибудь более продвинутое
Нет, пока не кажется... База данных не очень велика, возможностей Мускуля пока более чем достаточно.
...
Рейтинг: 0 / 0
InnoDB - тормоза страшнючие - что не так?
    #32437392
BigHarry
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот мы опять вернулись к моему постоу про скорость....

Да нормально все со скоростью - я же писал, что с begin/commit все прекрасно !!!


Быть может, все же, поставить Постгрес...

Да уже давно стоит - тока под фрей... С Виндовой кодировкой проблемы...
...
Рейтинг: 0 / 0
InnoDB - тормоза страшнючие - что не так?
    #32437410
BigHarry
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Big thanks to Хрен !!!
Выставил следующие опции:
innodb_flush_log_at_trx_commit=0
set-variable = innodb_file_io_threads=9

ЗАЛЕТАЛО !!! Что с транзакциями, что без - все быстро !!!
Понятно - sync после каждой вставки - вот где тормоза были ! А база-то лежит на зеркалючем рейде - и запись на винты более медленна...
...
Рейтинг: 0 / 0
InnoDB - тормоза страшнючие - что не так?
    #32437809
Sad Spirit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BigHarryВо первых - при нажатии кнопки Reset данные можно потерять не только в хранилище innoDB - но абсолютно в любой другой системе.
если в логе транзакций есть записи, то по ним восстановятся данные. если записей в логе нету --- привет. я достаточно доходчиво?

BigHarryДа уже давно стоит - тока под фрей... С Виндовой кодировкой проблемы...

вот это читать пробовал?

BigHarryЗАЛЕТАЛО !!! Что с транзакциями, что без - все быстро !!!

Угу, а теперь попробуй в PostgreSQL отключить параметр fsync...
...
Рейтинг: 0 / 0
InnoDB - тормоза страшнючие - что не так?
    #32437848
BigHarry
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
если в логе транзакций есть записи, то по ним восстановятся данные. если записей в логе нету --- привет. я достаточно доходчиво?

Сброс на винт делается раз в секунду. Раз в секунду!!! Я достаточно доходчиво написал? Если нажать резет в момент записи лога - то на любой БД будет облом, и откат произойдет на предыдущую завершенную транзакцию.
Я к тому, что innodb_flush_log_at_trx_commit=0 не отключает лог, а только уменьшает интревал времени флушинга. Ничего страшного в этом нету - ведь никто не отключает кэширование винтов из-за гипотетической возможности потери информации при отказе питания?
...
Рейтинг: 0 / 0
25 сообщений из 60, страница 1 из 3
Форумы / MySQL [игнор отключен] [закрыт для гостей] / InnoDB - тормоза страшнючие - что не так?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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