Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / MySQL [игнор отключен] [закрыт для гостей] / MariaDB auto_increment на insert select / 6 сообщений из 6, страница 1 из 1
19.12.2013, 21:55:25
    #38507173
Lumix
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MariaDB auto_increment на insert select
Код: sql
1.
2.
3.
4.
create table a ( posA int auto_increment, primary key (posA) );
create table b ( posB int auto_increment, primary key (posB) );
insert into b values(); -- 100 раз в цикле
insert into a (posA) select posB from b where limit 5;



в mariaDB 5.5.34

при вставке через insert select следующий auto_increment в таблице а выставляется кратным 8
например, при вставке select limit 5 auto_incrent встанет 8
например, при вставке select limit 10 auto_incrent встанет 16
например, при вставке select limit 50 auto_incrent встанет 64

при вставке insert into a values() инкремент повышается нормально, по единичке

на mysql 5.0.24 insert select выставляет следующий инкремент нормально
например select limit 5 выставит следующий на 6
например select limit 10 выставит следующий на 11
например select limit 50 выставит следующий на 51

в чем может быть проблема и как это вылечить?
...
Рейтинг: 0 / 0
19.12.2013, 23:05:38
    #38507212
retvizan
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MariaDB auto_increment на insert select
engine у таблиц в обоих случаях одинаковый?
Давно ещё сталкивался с такой проблемой у innodb таблиц в mysql
...
Рейтинг: 0 / 0
19.12.2013, 23:56:39
    #38507241
Lumix
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MariaDB auto_increment на insert select
retvizanengine у таблиц в обоих случаях одинаковый?
Давно ещё сталкивался с такой проблемой у innodb таблиц в mysql

engine у обоих таблиц был одинаковый innodb, но несмотря на то, что проблема на innodb остается, я смог конкретно в данном случае решить свою задачу путем перевода таблиц на myisam конкретно для этой процедуры.

Спасибо!
...
Рейтинг: 0 / 0
20.12.2013, 08:28:51
    #38507399
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MariaDB auto_increment на insert select
В принципе непонятно, что удивляет и в чём проблема...

Касательно кратности - возможно, фича реализации движка в данной СУБД, попытка ускорить вставки за счёт резервирования небольшого (8 штук) диапазона уникальных значений автоинкремента.

А что до проблемы - то нет её, проблемы-то. Ну кратно 8 - и что?
...
Рейтинг: 0 / 0
20.12.2013, 10:28:45
    #38507521
netwind
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MariaDB auto_increment на insert select
Во-первых, немонотонное увеличение идентификаторов auto_increment - это не проблема. Разработчики mariadb тоже так могут считать и сделать какие-нибудь "хайололоад" оптимизации для исключения горячих участков. Сейчас так модно.

Во-вторых, вы уверены что вот там " 100 раз в цикле " не происходит что-то неочевидное типа проверок вставкой и удаления или параллельного обращения к той же таблице в другом потоке ?
...
Рейтинг: 0 / 0
20.12.2013, 11:20:36
    #38507592
Lumix
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MariaDB auto_increment на insert select
рывшись на просторах интернета я нашел объяснение этой проблеме

http://www.mysqlperformanceblog.com/2011/11/29/avoiding-auto-increment-holes-on-innodb-with-insert-ignore/

это так специально сделано, чтобы повысить скорость insert select

чтобы опять работало как раньше нужно выставить параметр the innodb_autoinc_lock_mode в 0
...
Рейтинг: 0 / 0
Форумы / MySQL [игнор отключен] [закрыт для гостей] / MariaDB auto_increment на insert select / 6 сообщений из 6, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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