Мы используем cookie-файлы
Для оптимизации работы нашего сайта мы используем cookie-файлы. Продолжая использовать сайт, Вы соглашаетесь с использованием cookie-файлов.
  • Русский
  • Українська
  • UAH
  • USD
  • RUB
  • EUR
  • +38(044) 392-74-33  Киев
  • +38(057) 728-39-00  Харьков
  • +38(056) 794-38-31  Днепр
  • +38(032) 229-58-93  Львов
  • +38(048) 738-57-70  Одесса
  • +38(093) 170-15-42  Life
  • +38(067) 400-88-44  Киевстар
  • +38(095) 630-90-82  Vodafone
  • +1(888)393-24-51  USA, Toll free
  • +44(131)507-01-14  Great Britain
  • +7(499) 348-28-61  Москва

MySQL. Проблема з INSERT IGNORE та innodb_autoinc_lock_mode

Форумы MySQL Проблема з INSERT IGNORE та innodb_autoinc_lock_mode

dabeedj
4 года
0
Проблема з INSERT IGNORE та innodb_autoinc_lock_mode

Доброго дня
Пропоную змінити параметер у mysql.ini
Замість стандартного значення прописати
innodb_autoinc_lock_mode = 0
На даний момент при спробі INSERTу дубляжу унікального ключа за допомогою INSERT IGNORE вставка не відбувається (як і має бути), але спрацьовує auto_increment
Таким чином, якщо, для прикладу, поточний primiry key auto_increment = 1 і зробити 10 вставок з дублями, кількість рядків не збільшиться, а auto_increment буде = 11
Наскіьки мені відомо, на нормально роботузвичайних запитів воно не вплине
Хотів би почути вашу думку

rudenko
4 года
1

Режим consecutive был создан для того, чтоб дать возможность одновременно выполнять несколько простых INSERT в таблицу без необходимости блокировать другие INSERT запросы. Этого нет в traditional, который был до версии 5.1 - там любой INSERT запрос блокирует другой INSERT. Да, минусом в этом случае является увеличение значения auto increment при MIXED INSERT и INSERT ON DUPLICATE KEY UPDATE

dabeedj
4 года
0

І що, в даному випадку, білше зло?:)
Для мене consecutive.
Можливо є якесь рішення, як обійти це і не завалити ресурси сервака, про яке я не знаю?:)

rudenko
4 года
1

Можливо є якесь рішення, як обійти це і не завалити ресурси сервака, про яке я не знаю © dabeedj

Возможно перевод этой таблицы на MyISAM решит проблему? Если транзакций нет, то вполне возможно это будет выход из ситуации?

dabeedj
4 года
0

Якби не були потрібні зовнішні ключі, то я б так і зробив

rudenko
4 года
0

А на что влияет рост значения id в таблице? почему не получается просто проигнорировать этот факт?

dabeedj
4 года
0

Як в одному анекдот - "нєакуратнєнько виходіт":)
Таких "прольотів" може бути тисячі за раз і букавальне за пару днів можна добратись до 7-8-значних id, при тому, що реально записів буде декілька сотень

info620
4 года
2

Таких "прольотів" може бути тисячі за раз і букавальне за пару днів можна добратись до 7-8-значних id, при тому, що реально записів буде декілька сотень
© dabeedj

Оберіть коли навантаження найменше та по крону запускайте в цей час скрипт що буде перевстановлювати ID - якщо у вас UPDATE для ключів CASCADE тоді ключи оновлюяться автоматично - профіт!
Або перейдіть на UUID тоді проблема відстрочиться на ...... багато там щось ~ 10^42 варіантів + UUID генерується по часу якщо я правельно пам'ятаю :)
І доречі з огляду на ACID consecutive все ж добро ;)
Update ~10^38 точніше 2^128 ) трошки менше але це все рівно більше ніж BIGINT в якому 2^64

dabeedj
4 года
0

Хороша ідея, загалом:) Але я з тих "бувших", які мали 48кБ RAM на початках і я терпіти не можу таку "розточітєльность":)))

info620
4 года
0

Хороша ідея, загалом:) Але я з тих "бувших", які мали 48кБ RAM © dabeedj

Не повірите але не ви один :) Проте час іде і треба еволюціонувати ;)
P.S. Добре добре в мене не 48КБ було вже, а в мегабайтах. Але 8МБ це було мега круто і пакування данних через бітові поля в Сях було нормою:)

dabeedj
4 года
0

Я взагалі на Сях намагався максимум, що можу, на ассемблері ембедити:) Ібо ібо:)

Участвовать в общении на этом форуме могут только зарегистрированные пользователи.