티스토리 뷰

공부

[mysql] innodb_autoinc_lock_mode = 0

승가비 2023. 8. 20. 14:39
728x90
SHOW VARIABLES LIKE 'innodb_autoinc_lock_mode'

SET GLOBAL innodb_autoinc_lock_mode=0;
DELIMITER //

DROP PROCEDURE IF EXISTS fix_id;
CREATE PROCEDURE fix_id()
BEGIN
    DECLARE done INT DEFAULT FALSE;
    DECLARE tableName VARCHAR(255);
    DECLARE cur CURSOR FOR SELECT table_name FROM information_schema.tables WHERE table_schema = 'b';
    DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE;

    OPEN cur;

    read_loop: LOOP
        FETCH cur INTO tableName;
        SELECT tableName AS '** DEBUG:';

        IF done THEN
            LEAVE read_loop;
        END IF;

        SET @COUNT = 0;
        SET @sql = CONCAT('UPDATE ', tableName, ' SET id = @COUNT:=@COUNT+1;');
        PREPARE stmt FROM @sql;
        EXECUTE stmt;
        DEALLOCATE PREPARE stmt;

        SET @T = NULL;
        SET @sql = CONCAT('SELECT MAX(id) INTO @T FROM ', tableName, ';');
        PREPARE stmt FROM @sql;
        EXECUTE stmt;
        DEALLOCATE PREPARE stmt;

        SET @sql = CONCAT('ALTER TABLE ', tableName, ' AUTO_INCREMENT = ', IFNULL(@T, 0) + 1);
        PREPARE stmt FROM @sql;
        EXECUTE stmt;
        DEALLOCATE PREPARE stmt;

    END LOOP read_loop;

    CLOSE cur;
END;
//

DELIMITER ;

-- CALL fix_id()
vi /etc/mysql/mysql.conf.d/mysqld.cnf

# innodb_autoinc_lock_mode = 0

systemctl restart mysql

https://stackoverflow.com/questions/41922381/mysql-innodb-auto-increment-lock-workaround

 

MySql innoDB auto increment lock workaround

I have a project in which I insert a lot if info to a table with an auto increment primary key per second and do that with multi-threading which means that there are many threads that tries to inse...

stackoverflow.com

https://velog.io/@sjy5386/SQL-AUTOINCREMENT-%EA%B0%92-%EC%B4%88%EA%B8%B0%ED%99%94%EC%9E%AC%EC%A0%95%EB%A0%AC

 

[MySQL/MariaDB] AUTO_INCREMENT 값 초기화/재정렬

AUTO_INCREMENT를 이용해 PRIMARY KEY를 UNIQUE하게 설정할 수 있는데, 이 경우 한 번 사용된 값이 더 이상 사용되지 않는다고 해도 한 번 증가된 값은 다시 조정되지 않는다.해당 테이블에서 AUTO_INCREMENT

velog.io

https://hoing.io/archives/1289

 

MySQL - auto_increment 와 innodb_autoinc_lock_mode

안녕하세요 이번 포스팅에서는 MySQL 의 자동 증가 번호 기능인 auto_increment 그리고 연관된 파라미터인 innodb_autoinc_lock_mode 에 대해서 확인해보도록 하겠습니다.   auto_incrementauto_increment 는 MySQL의

hoing.io

https://stackoverflow.com/questions/970597/change-auto-increment-starting-number/76938064#76938064

 

Change auto increment starting number?

In MySQL, I have a table, and I want to set the auto_increment value to 5 instead of 1. Is this possible and what query statement does this?

stackoverflow.com

https://stackoverflow.com/questions/38347110/prevent-innodb-auto-increment-on-duplicate-key/76938065#76938065

 

Prevent InnoDB auto increment ON DUPLICATE KEY

I am currently having problems with a primary key ID which is set to auto increment. It keeps incrementing ON DUPLICATE KEY. For Example: ID | field1 | field2 1 | user | value 5 |

stackoverflow.com

 

728x90

'공부' 카테고리의 다른 글

[Spring] @EnableBatchProcessing 어노테이션  (0) 2023.08.20
[Spring] Event, @TransactionalEventListener 사용하기  (0) 2023.08.20
[datadog] airflow statsd  (0) 2023.08.20
[sh] start.sh  (0) 2023.08.20
[python] __new__ -> __init__  (0) 2023.08.20
댓글