innodb_defragment=1로 OPTIMIZE했는데 Table does not support optimize가 나오는 이유(MariaDB 10.2.x)

4007 단어 InnoDBMySQLmariadb

조사의 계기



직장과 집에서 OPTIMIZE TABLE 의 거동에 차이가 있었던 것이 조사의 계기입니다
직장에서 MariaDB 10.2.9, 집에서 MariaDB 10.3.10을 사용하고 있습니다.

조사하고 싶은 것


  • MariaDB 10.2.9에서 시스템 변수 innodb_defragment이 작동하지 않는 이유
  • MariaDB 10.3.10에서 작동하는 이유

  • innodb_defragment


  • MariaDB 10.1.1에서 도입 된 시스템 변수
  • OPTIMIZE TABLE 런타임에서 InnoDB 조각 모음 방법 (복사/내부)을 전환합니다.
  • innodb_defragment=0 는 복사, innodb_defragment=1 는 인플레이스

    htps // 마리아 db. 코 m / kb / 엔 / ぃ b 등 ry / f f g 멘칭 g

  • 실행 환경


  • MariaDB 10.2.9
  • MariaDB 10.3.10
  • InnoDB
  • innodb_defragment = 1

  • 조사 결과


  • MariaDB 10.2.6에서 시스템 변수 innodb_defragment이 일단 비활성화되었습니다.
    → MariaDB 10.2.9는 유효하지 않습니다
  • MariaDB 10.2.10에서 다시 활성화되었습니다.
    → MariaDB 10.3.10은 유효합니다

  • 10.2.6 릴리스 노트
    'innodb_defragment가 사용 중지되었습니다.'

    MDEV-11336: Disabled defragmentation

    10.2.10 릴리스 노트
    "innodb_defragment가 활성화되었습니다."

    MDEV-11336 innodb_defragment was enabled

    OPTIMIZE TABLE 런타임 동작



    MariaDB 10.2.9



    Msg_text에 Table does not support optimize, doing recreate + analyze instead · OK가 출력됩니다.ALTER TABLE tab_name ENGINE = InnoDB; (테이블 복사를위한 조각 모음)이 실행됩니다.
    MariaDB [test]> OPTIMIZE TABLE tb_defragment;
    +--------------------+----------+----------+-------------------------------------------------------------------+
    | Table              | Op       | Msg_type | Msg_text                                                          |
    +--------------------+----------+----------+-------------------------------------------------------------------+
    | test.tb_defragment | optimize | note     | Table does not support optimize, doing recreate + analyze instead |
    | test.tb_defragment | optimize | status   | OK                                                                |
    +--------------------+----------+----------+-------------------------------------------------------------------+
    

    MariaDB 10.3.10



    Msg_text에 OK가 출력됩니다.
    내부 자리 조각 모음이 실행됩니다.
    MariaDB [test]> OPTIMIZE TABLE tb_defragment;
    +--------------------+----------+----------+----------+
    | Table              | Op       | Msg_type | Msg_text |
    +--------------------+----------+----------+----------+
    | test.tb_defragment | optimize | status   | OK       |
    +--------------------+----------+----------+----------+
    

    소감



    버전 도중 시스템 변수가 일단 유효하지 않은 것으로 놀랐습니다

    참고문헌



    MariaDB 10.2.6 Release Notes - MariaDB Knowledge Base
    MariaDB 10.2.10 Release Notes - MariaDB Knowledge Base
    [MDEV-11336] Enable defragmentation on 10.2 when tests pass - Jira

    좋은 웹페이지 즐겨찾기