[MySQL] DB operation

  • 697
  • 0
  • 2021-02-04

關於mysql inno db 常見的指令

Remove partition without remove data

ALTER TABLE `TblName`  REMOVE PARTITIONING;

Optimize InnoDB table

ALTER TABLE table.name ENGINE='InnoDB';

Get tables with partition

SELECT table_schema, table_name FROM information_schema.`PARTITIONS` WHERE partition_name IS NOT NULL GROUP BY table_schema, table_name;

Mysqldump with query statement

mysqldump  -u$USER -p'$PWD' $db_name $tbl_name --where="added_time>='2018-05-01' and added_time <'2018-07-01'" --no-create-info > xxx.sql

Get lock

5.7

SELECT  TRX_L.`trx_mysql_thread_id` AS '進程編號'     , TRX_L.`trx_started` AS 'Start time'     , NOW() - TRX_L.`trx_started` AS '等待歷時(秒)'     , L_R.`lock_table` AS '表'  , TRX_L.`trx_id` AS '鎖定中的事務'  , L_R.`lock_mode` AS '鎖定模式'  , TRX_L.`trx_state` AS '鎖定狀態' FROM information_schema.innodb_lock_waits AS LW INNER JOIN (SELECT trx_id, trx_started, trx_mysql_thread_id, trx_state FROM information_schema.innodb_trx) AS TRX_L  ON LW.`blocking_trx_id` = TRX_L.`trx_id` INNER JOIN (SELECT lock_id, lock_table, lock_mode FROM information_schema.innodb_locks) AS L_R  ON LW.`requested_lock_id` = L_R.`lock_id`;


 

8.0

SELECT

    TRX_L.trx_mysql_thread_id AS '進程編號' ,

    TRX_L.trx_started AS 'Start time' ,

    NOW() - TRX_L.trx_started AS '等待歷時(秒)' ,

    L_R.lock_data AS '資料' ,

    TRX_L.trx_id AS '鎖定中的事務' ,

    L_R.lock_mode AS '鎖定模式' ,

    TRX_L.trx_state AS '鎖定狀態'

FROM

    performance_schema.data_lock_waits dlw

INNER JOIN (

    SELECT

        trx_id,

        trx_started,

        trx_mysql_thread_id,

        trx_state

    FROM

        information_schema.innodb_trx) AS TRX_L ON

    dlw.blocking_engine_transaction_id = TRX_L.trx_id

INNER JOIN (

    SELECT

        engine_lock_id,

        lock_data,

        lock_mode

    FROM

        performance_schema.data_locks) AS L_R ON

    dlw.requesting_engine_lock_id = L_R.engine_lock_id;