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

INVISIBLE INDEX

本文檔介紹了如何使用INVISIBLE INDEX功能。

背景信息

PolarDB-X支持把index的可見性設置為VISIBLE/INVISIBLE。如果一個index的可見性為INVISIBLE,優化器將不使用該索引。

在大表上創建/刪除索引是一個耗時的操作,但修改索引的可見性卻很快。因此您可以在不真正刪除一個索引的情況下,通過把該索引的可見性設置成INVISIBLE來評估刪除索引對您的業務查詢性能的影響。

前提條件

PolarDB-X實例版本需在5.4.17-16835173及以上。查看實例版本的方法請參見查看和升級實例版本

注意事項

  • INVISIBLE INDEX功能同時支持AUTO模式數據庫與DRDS模式數據庫

  • INVISIBLE INDEX僅支持全局二級索引,不支持Local Index。

  • 修改索引的可見性不會影響索引的維護。無論可見性設置為INVISIBLE還是VISIBLE,索引數據都會隨著主表數據的更新而更新。如果該索引具有唯一性約束,可見性的設置也不會影響它的唯一性約束。

  • 當一個索引的狀態為INVISIBLE時,對其使用force index是無效的。

示例

說明

為方便表述,以下示例的建表語法采用AUTO模式數據庫的語法。

  • 不指定VISIBLE/INVISIBLE關鍵字,直接建表,index的可見性默認為VISIBLE。

    create table t_order (
      `id` bigint(11),
      `order_id` varchar(20),
      `buyer_id` varchar(20),
      global index `g_order_id` (order_id) partition by key(order_id)
    ) partition by hash(`id`);
  • 建表時指定index的可見性。

    create table t_order (
      `id` bigint(11),
      `order_id` varchar(20),
      `buyer_id` varchar(20),
      global index `g_order_id` (order_id) partition by key(order_id) invisible
    ) partition by hash(`id`);
  • 在已經建好的表上添加index,并指定該index的可見性(如不指定VISIBLE/INVISIBLE則默認可見)。

    alter table t_order add global index g_buyer_id(buyer_id) partition by hash(buyer_id) invisible;
  • 修改已經建立的index的可見性。

    -- 改為invisible狀態
    alter table t_order alter index `g_order_id` invisible;
    -- 改為visible狀態
    alter table t_order alter index `g_order_id` visible;

常見問題

  • Q:把一個index的可見性設置為INVISIBLE后,該檢查哪些方面,從而評估刪除這個index對業務的影響?

    A:您可以從包括但不限于以下這些方面進行檢查:

    • 在業務負載不變的情況下,觀察PolarDB-X實例的CPU、內存等指標是否有較大變化;

    • 是否出現預期以外的慢SQL;

    • 如果您正在壓測,可以觀察壓測結果是否有較大變化;

    • 如果您曾在查詢語句中用force index顯式指定過此index,您可以觀察這些查詢語句是否變慢。

  • Q:把索引改為INVISIBLE狀態,會影響用到該索引的所有SQL。如何查看某條特定的SQL不使用該索引時的效果?

    A:這種情況下您無需使用invisible index,可以通過ignore index來提示優化器在查詢時忽略該index。