MySQL Sequence 목록 조회 - MySQL Sequence moglog johoe

1. 시퀀스 테이블 생성 (변경하는것 없이 그대로 실행)

CREATE TABLE sequences ( name varchar(32), currval BIGINT UNSIGNED ) ENGINE=InnoDB;

2. 시퀀스 프로시저 생성(변경하는것 없이 그대로 실행)

DELIMITER $$

CREATE PROCEDURE `create_sequence`(IN the_name text)

MODIFIES SQL DATA

DETERMINISTIC

BEGIN

    DELETE FROM sequences WHERE name=the_name;

    INSERT INTO sequences VALUES (the_name, 0);

END

3. nextval function 생성(변경하는것 없이 그대로 실행)

 DELIMITER $$ 

 CREATE FUNCTION `nextval`(the_name varchar(32))

 RETURNS BIGINT UNSIGNED

 MODIFIES SQL DATA

 DETERMINISTIC

 BEGIN

     DECLARE ret BIGINT UNSIGNED;

     UPDATE sequences SET currval=currval+1 WHERE name=the_name;

     SELECT currval INTO ret FROM sequences WHERE name=the_name limit 1;

     RETURN ret;

 END

4. 시퀀스명 입력 및 0값 넣기 ('Statistics_seq' 대신 원하는 시퀀스 명을 넣을 것)

INSERT INTO sequences VALUES ('Statistics_seq', 0);

5. nextval 값 가져오기 ('Statistics_seq' 대신 생성한 시퀀스 명을 넣을 것)

select nextval('Student_seq') as Student_seq from dual;

* 시퀀스를 하나 생성한 후 추가로 시퀀스를 생성할 시 3번부터 진행하시면 됩니다.

@ 시퀀스 생성 방법은 하기의 내용 처럼 이쁜우리님 티스토리에서 가져왔습니다.

mariadb sequence 생성 및 사용 예제

mariadb sequence 생성 및 사용 예제


mariadb 에서 sequence를 10.3 버전부터 사용 할 수 있습니다.
이번 포스팅에서는 mariadb내 sequence를 생성 하고, 사용하는 예제를 확인 해보도록 하겠습니다.
아주 간단하게 sequence를  사용 할 수 있도록 예문을 토대로 설명 드리도록 하겠습니다.

mariadb sequence 생성


mariadb 에서 sequence를 생성하는 예제코드 입니다.

create sequence test.sq_test start with 1 increment by 1 maxvalue 999999 cycle;

위와 같이 sequence를 생성 해봤습니다.
sequence의 이름은 sq_test 라고 했습니다.
주로, sequence를 생성할때는 object의 prefix를 sq_로 많이 설정해서 쓰게 됩니다.
그리고 시작값은 1이고, 1씩 증가를 하게 됩니다.
최대값은 999999 입니다.

이젠, 이렇게 sequence를 생성 하였으니 사용 하는 방법도 있겠죠.

mariadb sequence nextval 출력

먼저, sequence의 다음값을 출력하는 방법입니다.

select nextval(test.sq_test);

위 명령어로 다음 sequence 값을 출력 할 수 있습니다.
아래 그림과 같이 말이죠.
두번을 연달아서 해봤습니다.

mariadb sequence nextval 출력1
mariadb sequence nextval 출력2

1,2 가 출력이 잘 되었습니다.
sequence의 nextval을 호출하면 다음값을 바로 불러오고, 또 호출하면 그 다음 값을 불러오게 됩니다. 1씩 증가를 하는거죠.

mariadb sequence lastval 출력

다음은 지금 sequence가 몇번인지를 확인 하는 방법 입니다.
현재 sequence 번호의 확인이 필요 할 때도 있겠죠.

select lastval(test.sq_test);

위 명령어로 지금값을 확인 할 수 있죠.
아래 그림처럼 2가 나오겠죠.

mariadb sequence lastval 출력

mariadb sequence restart

마지막은 sequence를 특정 번호에서 시작 할 수 있게 하는 방법입니다.
위에서 1부터 시작을 하게 했고, 지금 2까지 출력이 되었는데, 예를들어서 70000번 부터 시작 하고 싶으시다면 아래와 같은 sql을 실행 하면 됩니다.

alter sequence test.sq_test restart 700000;

위와 같이 sql문을 실행 하고, 다시 nextval을 호출 해 볼께요.
그럼 아래와 같이 70000번부터 sequence가 시작 하는것을 확인 할 수 있습니다.

mariadb sequence restart

자, 오늘은 이렇게 mariadb의 sequence에 대해서 확인 해 봤습니다.

감사합니다!!

by.sTricky

int(11) auto increment 최대 4294967295 이후에는 error

unsigned BIGINT 최대 18446744073709551615 까지 사용 가능 

-- 테이블의 상태 확인

show table status where name='T_HADOOP_LATEST_METRICS';

+-------------------------+--------+---------+------------+-------+----------------+-------------+-----------------+--------------+-----------+----------------+---------------------+-------------+------------+-----------------+----------+----------------+---------+

| Name                    | Engine | Version | Row_format | Rows  | Avg_row_length | Data_length | Max_data_length | Index_length | Data_free | Auto_increment | Create_time         | Update_time | Check_time | Collation       | Checksum | Create_options | Comment |

+-------------------------+--------+---------+------------+-------+----------------+-------------+-----------------+--------------+-----------+----------------+---------------------+-------------+------------+-----------------+----------+----------------+---------+

| T_HADOOP_LATEST_METRICS | InnoDB |      10 | Compact    | 18124 |            144 |     2621440 |               0 |      7913472 |   4194304 |     4294967295 | 2017-11-06 13:57:16 | NULL        | NULL       | utf8_general_ci |     NULL |                |         |

+-------------------------+--------+---------+------------+-------+----------------+-------------+-----------------+--------------+-----------+----------------+---------------------+-------------+------------+-----------------+----------+----------------+---------+

1 row in set (0.00 sec)

-- 시퀀스 조회 (20억 이상)

SELECT table_name,table_comment,table_schema,table_type,engine,

version,row_format,table_rows,avg_row_length,data_length,

max_data_length,index_length,AUTO_INCREMENT,create_time,table_collation,

CEILING((data_length+index_length)/1024/1024) AS total_mb,

CEILING((data_length)/1024/1024) AS data_mb,

CEILING((index_length)/1024/1024) AS index_mb

FROM information_schema.tables 

WHERE table_schema='cloumon'

and Auto_increment > 2000000000

ORDER BY Auto_increment DESC

;

+-------------------------+---------------+--------------+------------+--------+---------+------------+------------+----------------+-------------+-----------------+--------------+----------------+---------------------+-----------------+----------+---------+----------+

| table_name              | table_comment | table_schema | table_type | engine | version | row_format | table_rows | avg_row_length | data_length | max_data_length | index_length | AUTO_INCREMENT | create_time         | table_collation | total_mb | data_mb | index_mb |

+-------------------------+---------------+--------------+------------+--------+---------+------------+------------+----------------+-------------+-----------------+--------------+----------------+---------------------+-----------------+----------+---------+----------+

| T_HADOOP_LATEST_METRICS |               | cloumon      | BASE TABLE | InnoDB |      10 | Compact    |      18628 |            140 |     2621440 |               0 |      7913472 |     4294967295 | 2017-11-06 13:57:16 | utf8_general_ci |       11 |       3 |        8 |

| T_HOST_LATEST_METRICS   |               | cloumon      | BASE TABLE | InnoDB |      10 | Compact    |      17253 |             92 |     1589248 |               0 |      3178496 |     4294967295 | 2017-11-06 13:57:18 | utf8_general_ci |        5 |       2 |        4 |

| T_HBASE_LATEST_METRICS  |               | cloumon      | BASE TABLE | InnoDB |      10 | Compact    |      14489 |            182 |     2637824 |               0 |      8454144 |     4142014594 | 2017-11-06 13:57:17 | utf8_general_ci |       11 |       3 |        9 |

| T_MR_LATEST_METRICS     |               | cloumon      | BASE TABLE | InnoDB |      10 | Compact    |       3402 |            105 |      360448 |               0 |      1081344 |     2501997189 | 2017-11-06 13:57:20 | utf8_general_ci |        2 |       1 |        2 |

+-------------------------+---------------+--------------+------------+--------+---------+------------+------------+----------------+-------------+-----------------+--------------+----------------+---------------------+-----------------+----------+---------+----------+

4 rows in set (2.59 sec)

-- 시퀀스 초기화

use cloumon;

alter table T_HADOOP_LATEST_METRICS auto_increment=1;

alter table T_HOST_LATEST_METRICS auto_increment=1;

alter table T_HBASE_LATEST_METRICS auto_increment=1;

alter table T_MR_LATEST_METRICS auto_increment=1;

Toplist

최신 우편물

태그