日本熟妇hd丰满老熟妇,中文字幕一区二区三区在线不卡 ,亚洲成片在线观看,免费女同在线一区二区

使用DAS經濟版進行鎖分析

DAS經濟版在基礎版功能的基礎上,增強了會話管理、鎖分析和性能洞察等功能,并新增了空間碎片自動回收,使數據庫運維更加高效便捷,幫助您7*24小時高效管理數據庫,避免業務受阻的風險,有效保障線上業務的穩定性。本文介紹如何通過DAS經濟版對RDS MySQL進行鎖分析。

前提條件

已創建RDS MySQL實例。詳情請參見快速使用RDS MySQL高可用版實例

重要

DAS經濟版當前僅支持華東2(上海)地域,請在華東2(上海)地域創建RDS MySQL實例。

開通DAS經濟版

  1. 登錄DAS控制臺

  2. 在左側導航欄中,單擊實例監控

  3. 找到目標實例,單擊實例ID,進入目標實例詳情頁。

  4. 單擊頁面右上角的開啟經濟版,依照界面提示購買并開通DAS經濟版。

    如果華東2(上海)地域的RDS MySQL實例無法開通DAS經濟版,或者開通DAS經濟版失敗,請單擊頁面右下角的反饋按鈕image,提交經濟版+阿里云賬號ID進行反饋。

    說明

    您可以單擊頁面右上角的頭像,獲取阿里云賬號ID。

使用DAS經濟版進行鎖分析

步驟一:構造數據

  1. 在目標RDS MySQL實例中創建名為das_test的測試數據庫。詳情請參見創建數據庫

  2. 通過數據管理DMS(Data Management)登錄RDS MySQL數據庫,詳情請參見通過DMS登錄RDS數據庫

  3. 在DMS的SQL窗口(SQL Console)執行如下命令,在數據庫das_test中創建測試表students。

    CREATE TABLE `students` (
      `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'id',
      `sid` char(64) NOT NULL COMMENT 'student id',
      `name` varchar(64) NOT NULL COMMENT 'name',
      `birth_date` date NOT NULL COMMENT 'birth date',
      `gender` char(16) NOT NULL COMMENT 'sex',
      `extra_info` varchar(1024) DEFAULT NULL,
      PRIMARY KEY (`id`),
      UNIQUE KEY `uk_sid` (`sid`)
    ) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8
  4. 重復執行如下命令10次,在測試表students中寫入測試數據。

    INSERT INTO students(sid, name, birth_date, gender, extra_info) VALUES(UUID(), SUBSTRING(UUID(), FLOOR(1+(RAND() * 18)), FLOOR(2+(RAND() * 16))), CONCAT(FLOOR(1990 + (RAND() * 20)),'-',LPAD(FLOOR(1 + (RAND() * 12)),2,0),'-',LPAD(FLOOR(1 + (RAND() * 27)),2,0)), 'female', UUID());
    
    INSERT INTO students(sid, name, birth_date, gender, extra_info) VALUES(UUID(), SUBSTRING(UUID(), FLOOR(1+(RAND() * 18)), FLOOR(2+(RAND() * 16))), CONCAT(FLOOR(1990 + (RAND() * 20)),'-',LPAD(FLOOR(1 + (RAND() * 12)),2,0),'-',LPAD(FLOOR(1 + (RAND() * 27)),2,0)), 'male', UUID());

步驟二:元數據鎖分析與處理

  1. 通過MySQL命令行工具連接RDS MySQL數據庫,構造會話一。詳情請參見使用命令行連接

    1. 查詢測試表students中的數據。

      SELECT id FROM students LIMIT 5;

      例如返回結果為:

      +----+
      | id |
      +----+
      |  1 |
      |  2 |
      |  3 |
      |  4 |
      |  5 |
      +----+
    2. 開啟事務,并更新測試表students中的數據,但不提交事務。

      BEGIN;
      UPDATE students SET name=UUID() WHERE id =3 ;
  2. 構造會話二,執行如下語句為測試表students增加索引。

    ALTER TABLE students ADD INDEX idx_name(name);
  3. 構造會話三,執行如下語句查詢測試表students中的數據。

    SELECT * FROM students WHERE id < 5;
  4. 登錄DAS控制臺,通過會話管理功能查看實例當前會話。詳情請參見實例會話

    實例會話顯示當前存在鎖等待。

    image

  5. 單擊查看詳情,查看會話鎖等待關系圖。

    image

  6. 選擇并結束可疑會話。

    image

  7. 刷新實例會話數據。可以觀察到,查詢語句已經執行完畢,DDL語句正在執行。

    說明

    如果測試表students上的數據較少,當可疑會話結束時,DDL語句會立即執行成功,將無法觀察到。

    image

步驟三:事務阻塞關系分析

  1. 通過MySQL命令行工具連接RDS MySQL數據庫,構造會話一。詳情請參見使用命令行連接

    1. 查詢測試表students中的數據。

      SELECT id FROM students WHERE id < 5;

      例如返回結果為:

      +----+
      | id |
      +----+
      |  1 |
      |  2 |
      |  3 |
      |  4 |
      +----+
    2. 開啟事務,并更新測試表students中的數據,但不提交事務。

      BEGIN;
      UPDATE students SET name=UUID() WHERE id < 5;
  2. 構造會話二,執行如下語句更新會話一中更新過的數據。

    UPDATE students SET name=UUID() WHERE id = 1;
  3. 構造會話三,執行如下語句更新會話一中更新過的數據。

    UPDATE students SET name=UUID() WHERE id = 2;
  4. 登錄DAS控制臺,通過會話管理功能查看實例當前會話。詳情請參見實例會話

    實例會話顯示當前有兩個事務處于LOCK WAIT狀態。

    image

  5. 在鎖等待統計區域,單擊查看詳情,查看會話鎖等待關系圖。

    image.png

  6. 在會話一中,執行如下命令提交事務。

    COMMIT;
  7. 查看實例當前會話,系統顯示另外兩個會話的更新語句已經執行完畢,并且已經沒有處于LOCK WAIT狀態的事務。

相關文檔