ClickHouse在表有資料的情況下修改表引擎

2021-10-20 00:05:01 字數 844 閱讀 8258

我們使用mergetree來表示mergetree系列 中的所有表引擎,replicatedmergetree同理。

如果各個副本上的資料不一致,則首先對其進行同步,或者除保留的乙個副本外,刪除其他所有副本上的資料。

重新命名現有的mergetree表,然後使用舊名稱建立replicatedmergetree表。

將資料從舊表移動到新錶(/var/lib/clickhouse/data/db_name/table_name/)目錄內的 『detached』 目錄中。

然後在其中乙個副本上執行alter table attach partition,將這些資料片段新增到工作集中。

使用其他名稱建立mergetree表。將具有replicatedmergetree表資料的目錄中的所有資料移動到新錶的資料目錄中。然後刪除replicatedmergetree表並重新啟動伺服器。

如果你想在不啟動伺服器的情況下清除replicatedmergetree表:

刪除元資料目錄中的相應 .sql 檔案(/var/lib/clickhouse/metadata/)。

刪除 zookeeper 中的相應路徑(/path_to_table/replica_name)。

之後,你可以啟動伺服器,建立乙個mergetree表,將資料移動到其目錄,然後重新啟動伺服器。

ClickHouse表常用引擎

是最簡單的表輕量引擎 最多約100萬行 一寫多讀的應用場景。同時讀寫會損害資料 tinylog 表經常作為中間表,用於資料的微批量處理.語法中無需攜帶任何引數 它將資料儲存到磁碟.每個欄位都以單獨壓縮檔案形式儲存.當寫入資料時,資料追加到檔案的末尾 這是目前clickhouse處理能力最好的引擎.引...

在沒有資料集的情況下使用資料表

使用資料介面卡填充資料表 using system using system.collections.generic using system.linq using system.text using system.data using system.data.sqlclient namespace...

Oracle中在已有資料的表中更改字段型別(四步)

data型轉換成varchar型 第一步 alter table feesdetails info rename column prescription date to prescription date1 備註 把原欄位換個名字,此條的sql是把prescription date 換成prescr...