powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / MySQL [игнор отключен] [закрыт для гостей] / MariaDB auto_increment на insert select
6 сообщений из 6, страница 1 из 1
MariaDB auto_increment на insert select
    #38507173
Фотография Lumix
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: 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
MariaDB auto_increment на insert select
    #38507212
retvizan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
engine у таблиц в обоих случаях одинаковый?
Давно ещё сталкивался с такой проблемой у innodb таблиц в mysql
...
Рейтинг: 0 / 0
MariaDB auto_increment на insert select
    #38507241
Фотография Lumix
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
retvizanengine у таблиц в обоих случаях одинаковый?
Давно ещё сталкивался с такой проблемой у innodb таблиц в mysql

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

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

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

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

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

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


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