このトピックでは、ApsaraDB for ClickHouse Enterprise Edition V24.2.2.16399でリリースされた機能について説明します。
新機能
system.dns_cacheテーブルは、ドメインネームシステム (DNS) の問題をデバッグするためにサポートされています。
mergeTreeIndexテーブル関数がサポートされています。
この関数は、MergeTreeテーブルのインデックスとマーカーファイルの内容を表します。 それはintrospectionに使用することができます。
構文:
説明次のSQL構文では、database.tableはMergeTreeエンジンを使用する既存のテーブルです。
mergeTreeIndex(database.table, [with_marks = true])
generate_seriesテーブル関数がサポートされています。 この関数は、自然数の算術数列でテーブルを生成するために使用できます。
StorageMemory (メモリエンジン) には、次の4つのプロパティが追加されます。
説明テーブルパラメーターの境界へのアクセスを有効にするには、memory.mdドキュメントのMemorySinkにコンテキストプロパティを追加する必要があります。
min_bytes_to_keep
max_bytes_to_keep
min_rows_to_keep
max_rows_to_keep
マージテーブル関数の単一引数バージョンがサポートされています。 構文は
merge([<db_name>, ] <tables_regexp>)
です。groupArrayIntersect集計関数がサポートされています。
toMillisecond関数がサポートされています。
説明この関数は、DateTimeまたはDateTime64型の値を秒単位で返します。
SQL文を使用して、空のパーティションに関連するZooKeeperノードを削除できます。
構文:
ALTER TABLE <table_name> FORGET PARTITION partition;
次の表に、上記のステートメントのパラメーターを示します。
項目
説明
例:
table_name
テーブルの名前。
test
DIFINER=<userName>
構文は、ビューまたはマテリアライズドビューでビュー定義を指定するために提供されています。 ビュー定義者には、基になるテーブルに対する明示的な権限なしに、ビューに対してクエリおよび挿入操作を実行する権限があります。Topkモードとtopkweightedモードがサポートされており、値のカウントとエラーが返されます。
ファイルで不明なファイル形式、s3、hdfs、url、およびazureBlobStorageエンジンは、スキーマ推論中に自動的に検出されます。
デフォルトの圧縮アルゴリズムがLZ4HC(3) からLZ4HC(2) に変更されます。これにより、圧縮が少なくなり、クエリ効率が向上します。
ファイル名拡張子は大文字と小文字を区別しません。 例えば、Tsv、TSV、およびtsvは、同じファイルタイプを示す。
ATTACH PARTITION ALLステートメントがサポートされています。
経営改善
ApsaraDB for ClickHouseサーバーとApsaraDB for ClickHouse Keeperは、計算容量単位 (CCU) に基づいてメモリソフト制限を動的に調整します。 これにより、キーパーがサポートする小さな最大メモリの制限がなくなり、メモリ不足 (OOM) の問題がある程度防止されます。
非圧縮キャッシュは無効です。
マークキャッシュサイズの設定ロジックは、エラスティックスケーリングの場合にメモリ使用量を減らすように最適化されています。
FileSystemCacheのサイズは、CCUに基づいて動的に調整できます。 以前のバージョンでは、サイズは100 GBに固定されていました。
より積極的なサーバーレスポリシーがサポートされています。 この機能は招待プレビューです。
デフォルトでは、問題のトラブルシューティングに役立つtext_logが有効になっています。
メモリ使用量の変化に対するシステムの応答性が改善される。
パッケージ化されたファイルは、キャッシュされたダウンロードコンテンツを最適化し、Object Storage Service (OSS) へのネットワークトラフィックとQPS増幅率を減らすためにソートされます。
改善
S3Queueテーブルエンジンでは、並列および分散処理がサポートされています。
説明s3queue_total_shards_numを設定して分散処理を実装できます。 デフォルト値は 1 です。
s3queue_processing_threads_numを設定すると、順序付き処理モードがサポートされます。
注意: s3queue_processing_threads_num (シャードあたりの処理スレッド数) およびs3queue_total_shards_num設定により、順序モードでのメタデータの格納方法が変更されます。 max_processed_fileノードの数は、
s3queue_processsing_threads_num × s3queue_total_shards_num
の値と同じです。 したがって、これらの設定はすべてのシャードで同じである必要があり、1つのシャードの作成後に変更することはできません。
マテリアライズド・ビューに対してMODIFY COLUMNクエリを実行するときは、内部テーブルのすべての列が存在することを確認してください。
system.keywordsテーブルがサポートされています。 このテーブルには、ファジーテストと構文強調表示の実行に役立つ、パーサーのすべてのキーワードが含まれています。
アナライザーによるパラメーター化ビューがサポートされています。 パラメータ化されたビューの作成は分析されない。 パラメータ化されたビューの既存のロジックはリファクタリングされます。 パラメータ化されたビューの作成は分析されない。
通常のデータベースは作成できません。 既存の通常のデータベースを引き続き使用できます。
テーブルを削除するときは、テーブルに関連するすべてのゼロコピーロックと、これらのロックを含むディレクトリを削除する必要があります。
dictGetOrDefault関数に短絡機能が追加されています。
列挙は、外部テーブルの構造で宣言することができます。
DEFAULT
またはMATERIALIZED
式の列に対してALTER COLUMN MATERIALIZE
操作を実行すると、システムは有効な値を書き込みます。説明デフォルト値を持つ既存の部品の場合、デフォルト値が書き込まれます。 デフォルト以外の値を持つ既存の部品の場合、デフォルト以外の値が書き込まれます。
以前のバージョンでは、デフォルト値は既存のすべての部品に書き込まれます。
指数バックオフなどのバックオフロジックが有効になり、CPU使用率、メモリ使用率、およびログファイルのサイズが削減されます。
軽量削除行は、データマージ中に考慮されます。
説明軽量削除行は、実際にはストレージから削除されず、削除済みとしてマークされたデータを指します。 軽量削除行の詳細については、「lightweight DELETEステートメント」をご参照ください。
Date32タイプはT64コーデックでサポートされています。
Pull Request (PR) を使用すると、3xxまたは4xxのステータスコードが返された場合でも、すべてのシナリオでHTTPおよびHTTPS接続を再利用できます。
システムテーブルのすべての列にコメントを追加できます。
PREWHERE句で仮想列を使用できます。
説明この最適化は、_part_offsetなどの非定数仮想列には価値があります。
Keeperの改善: latest_logs_cache_size_thresholdとcommit_logs_cache_size_thresholdを設定して、特定の数のログをメモリにキャッシュできます。
OSSは、定数キーを使用する代わりに、オブジェクト削除の機能を決定するためのキーを生成します。
デフォルトでは、指数表記の浮動小数点数は推論されません。
括弧 () は、ALTER操作を囲むために使用できます。
説明以前のバージョンは新しい構文をサポートしていません。 したがって、新しい構文を使用すると、新しいバージョンのApsaraDB for ClickHouseが単一のクラスターで使用されている場合に問題が発生する可能性があります。
フォーマットされたALTER操作は、ミューテーションなどの一部の場所にメタデータとして格納されるため、既定では、括弧 () はフォーマットされたクエリに含まれます。
新しい構文は、ALTER操作がリストで終わるいくつかのクエリをサポートします。 たとえば、
ALTER TABLE x MODIFY TTL date GROUP BY a、b、DROP COLUMN c
は、古い構文を使用して正しく解析できません。ALTER TABLE x (MODIFY TTL date GROUP BY a, b), (DROP COLUMN c)
は、新しい構文を使用して期待どおりに実行できます。
Intel Quick Path Interconnect (QPI) のアップグレードにより、DEFLATE_QPLコーデックが改善され、同時処理の問題を引き起こす可能性のあるポーリングタイムアウトメカニズムのエラーが修正されます。
位置プリアド機能はlibhdfs3でサポートされています。
説明libhdfs3で位置読み取りを呼び出す場合は、hdfs.hでhdfsPread関数を使用します。 例:
tSize hdfsPread(hdfsFS fs, hdfsFile file, void * buffer, tSize length, tOffset position);
誤ってmax_parser_depthを非常に高い値に設定しても、パーサーのスタックオーバーフローがチェックされます。
説明以前のバージョンでは、max_parser_depthを非常に高い値に設定すると、サーバーがクラッシュする可能性があります。
max_parser_depthのデフォルト値は1000です。 詳細については、コア設定トピックのmax_parser_depthセクションをご参照ください。
KafkaストレージでXMLファイルとSQL文を使用して作成された名前付きコレクションの動作は統一されています。
説明Kafkaストレージには、ストレージパラメータとlibrdkafkaパラメータの2種類のパラメータがあります。
最適化の前に、ストレージパラメータが両方の場合に使用される。 ただし、XMLファイルを使用して作成された名前付きコレクションのみが読み込まれます。
この最適化により、Kafkaストレージ内の名前付きコレクションのアクセス方法が統合され、サーバーを再起動することなく、XMLファイルを使用して作成された新しい名前付きコレクションを使用できます。
ユニバーサル一意識別子 (UUID) が
CREATE TABLE
文で明示的に指定されている場合、UUIDはreplica_pathで使用できます。例:
CREATE TABLE x UUID 'aaaaaaaa-1111-2222-3333-aaaaaaaaaaaa' (key Int) ENGINE = ReplicatedMergeTree('/tables/{database}/{uuid}', 'r1') ORDER BY tuple();
ReplicatedMergeTreeテーブルのmetadata_version列がsystem.tablesシステムテーブルに追加されます。
Keeperの改善: 失敗したディスク関連の操作に対して再試行メカニズムが追加されます。
StorageBufferに複数のシャードがある場合 (num_layersの値が1より大きい場合) 、バックグラウンドフラッシュは複数のスレッド内のすべてのシャードに対して同時に発生します。
ULIDStringToDateTime機能に短絡機能が追加されています。
ApsaraDB for ClickHouseのパフォーマンスは、アクティブなトランザクションがない場合に最適化されます。 この場合、ApsaraDB for ClickHouseはINVALID_TRANSACTION例外を報告せず、MySQLと同様の例外をスローしません。
none_only_activeモードはdistributed_ddl_output_modeでサポートされています。
MySQLポートを使用してApsaraDB for ClickHouseに接続する場合、prefer_column_name_to_aliasの値はデフォルトで1に設定されます。 mysql_map_string_to_text_in_show_columnsとmysql_map_fixed_string_to_text_in_show_columnsもデフォルトで有効になっています。 これにより、ビジネスインテリジェンス (BI) ツールとの互換性が向上します。
部分文字列関数には新しいエイリアスbyteSliceがあります。
SHOW INDEX | INDEXES | INDICES | KEYS
は、結果を主キー列でソートしなくなりました。Keeperの改善: サービスの起動中に無効なスナップショットが検出された場合、起動プロセスは中止されます。 これにより、データの損失を防ぐことができます。
文字列型と列挙は、配列、UNIONクエリ、条件式など、同じコンテキストで使用できます。
ヌル値を最大値または最小値として扱うために、ソート − マージ結合 (SMJ) に対してフラグが追加される。 これにより、ApsaraDB for ClickHouseは、Apache Sparkなどの他のSQLシステムと互換性があります。
parallel_replicas_allow_in_with_subquery = 1
がサポートされているため、INサブクエリは並列レプリカで動作できます。DNSResolverは、解決されたIPアドレスのセットをシャッフルします。
デフォルトでは、プロセッサのプロファイリングが有効になり、ソートおよび集計操作に費やされた時間、および入力バイトと出力バイトを追跡できます。
toUInt128OrZero関数がサポートされています。 互換性エイリアスFROM_UNIXTIMEとDATE_FORMATは大文字と小文字を区別しません。
アクセスチェックが改善され、ユーザーに付与されていない権限を取り消すことができます。
例:
GRANT SELECT ON . TO user1; REVOKE SELECT ON system.* FROM user1;
break文は削除され、最初にフィルターされた列の長さが最小になります。
has() 関数とNullable列の互換性は固定されています。
VMMaxMapCountとVMNumMapsの非同期メトリックは、仮想メモリマッピング用に追加されます。
temporary_files_codec設定は、外部メモリの並べ替えや外部メモリのGROUP BYなど、一時データを作成するときにすべての場合に使用されます。 以前は、この設定はpartial_merge JOINアルゴリズムでのみ使用されていました。
Amazon Simple Storage Service (Amazon S3) キューのシャードモードは、この設定が書き換えられるため許可されません。
blob_storage_logの一部の重複エントリは削除されます。
current_user関数がサポートされ、MySQLの互換性エイリアスとして使用されます。
修正された問題
次の問題が修正されました。メモリ統計エラーが原因でクエリが予期せず終了します。
クラスターの再起動後に最初のDDLステートメントを実行すると、例外が報告されます。
intDiv関数がdecimal型のパラメーターを処理するときに発生するエラーは修正されています。
WINGFUZZプラットフォームで見つかったKusto Query Language (KQL) の問題は修正されています。
AsynchronousBoundedReadBufferの
Read beyond last offset
エラーは修正されています。RabbitMQとApsaraDB for ClickHouse間の通信が異常な場合、肯定応答 (ACK) メッセージと否定応答 (NACK) メッセージが返されません。 現在、読み取りおよび書き込みフェーズ中に例外が発生すると、NACKメッセージが返されます。
次の問題が修正されました。QueryAnalyzerが、LowCardinality型の定数を持つGROUP BY句を含むクエリを分析すると、分析結果が返されません。
DateTime64値のスケール変換は固定されています。
INSERT into SQLite
ステートメントの単一引用符 (') のエスケープは修正されています。 単一引用符 (') は、バックスラッシュ (\) の代わりに単一引用符 (') を使用してエスケープされます。ApsaraDB for ClickHouseが列エイリアスを特定できず、エラーが報告されます。
MergeTreeの
finished_mutations_to_keep=0
の設定は固定されています。 値0は、すべてのコンテンツが保持されることを示す。S3Queueテーブルを削除するときに発生する可能性のある例外は修正されています。
次の問題が修正されました。PartsSplitterは、あるパーツの終了範囲のプライマリキー値が別のパーツの開始範囲のプライマリキー値と等しい場合、無効な読み取り範囲を生成します。
コンテキストのmax_query_sizeは、ハードコードされた4096を置き換えるためにDDLLogEntryで使用されます。
一貫性のないクエリ形式の問題が修正されました。
サブクエリでのEXPLAIN文のフォーマットの矛盾の問題が修正されました。
次の問題が修正されました。関数がヌル可能なデータ型を処理すると、cosineDistance関数がクラッシュします。
ブール値の文字列表現を実際のブール値に変換できます。
説明SELECT true = 'true'
のようなステートメントを実行できます。 以前は、そのようなステートメントを実行すると例外が発生しました。system.s3queue_logシステムテーブルは固定されています。
説明system.s3queue_logシステムテーブルの未入力列table_uuidは固定されています。 データベースとテーブルの列が追加されます。 table_uuid列の名前はuuidに変更されます。
arrayReduce関数を使用すると、
DB::ColumnVector<double> 型からDB::ColumnNullableへのBad cast
エラーが報告されることがあります。次の問題が修正されました。プライマリキーチェックやパーティションプルーニングなどの予備フィルターは、複数のINSERT操作が実行されると有効になりません。
S3Queueテーブルに関する機密情報は非表示です。
ORDER BY ALLをORDER by * に置き換える
が復元されます。Azure Blob Storageのエンドポイントとプレフィックスに関連する問題は修正されています。
HTTP例外コードは修正されています。
LRUResourceキャッシュ (Hiveキャッシュ) のバグが修正されました。
S3Queueのバグとフレーク状のテストtest_storage_s3_queue/test.py::test_shards_distributedが修正されました。
IPv6ハッシュ関数で初期化されていない値を使用して、無効な結果が生成されます。
並列レプリカが変更された場合、再解析は強制的に実行されます。
新しいディスク構成オプションが導入されたときのプレーンメタデータ型の使用は修正されています。
この設定は意味がないため、
max_parallel_replicas
を0に設定することはできません。mapContainsKeyLikeのロジックエラー
Cannot capture column because it has compatible type
を修正しようとします。空のパラメーターを持つOptimizeDateOrDateTimeConverterWithPreimageVisitorの問題は修正されました。
CREATE TABLE
のスカラサブクエリの計算を回避するために努力が払われる。s3Clusterのキーが正しくチェックされています。
エラーのために多数の行がスキップされたときに並列解析中に発生するデッドロックは修正されます。
max_query_sizeを設定したときに発生する、mv-expandなどのKQL複合演算子の問題は修正されました。
キーパーの修正: コミットログを待機するためのタイムアウトが追加されます。
system.numbersから読み取られる行の数が減ります。
日付タイプの番号のヒントは出力されません。
フィルタ条件で非決定性関数を使用してMergeTreeテーブルからデータを読み取ると、結果セットが正しくありません。
互換性設定の値タイプが正しくないことによるロジックエラーが修正されました。
次の問題が修正されました。ハイブリッドx86-64とARM Kubernetesクラスターで集計関数のステータスが一致しないこと。
Pipelined Relational Query Language (PRQL) の問題は、より堅牢なパニックハンドラを実装するために修正されています。
次の問題が修正されました。intDiv関数のパラメーターが10進および日付 /時刻タイプの場合、プログラムのクラッシュが発生します。
ALTER tableで共通テーブル式 (CTE) を使用すると例外が発生し
ます。 MODIFY QUERY
ステートメント。in-memoryエンジンなどの非アトミックまたは単純なデータベースエンジンのsystem.partsは固定されています。
パラメーター化されたビューのメタデータファイルのエラー無効なストレージ定義が修正されました。
CompressionCodecMultipleのバッファオーバーフローは固定されています。
SQLまたはJSONデータの意味のないコンテンツが削除されます。
quantileGK集計関数の無効なクリーンアップチェックは削除されます。
insert_deduplication_tokenカスタムパラメーターをクエリで使用すると、重複データが予期せず削除されます。
マルチパートアップロード操作を呼び出すと、サポートされていないカスタムメタデータヘッダーが追加されます。
toStartOfInterval関数は修正されています。
arrayEnumerateRanked関数のクラッシュが修正されました。
INSERT SELECT JOINステートメントでinput() 関数が使用されているときに発生するクラッシュが修正されました。
サブクエリにallow_experimental_analyzerの異なる値が存在する場合に発生するクラッシュは修正されています。
再帰は、Amazon S3バケットのデータが読み取られると削除されます。
HashedDictionaryParallelLoaderでエラーが発生した場合の潜在的な問題が修正されました。
レプリケートされたデータベースの非同期復元メカニズムは修正されています。
データがローカルプロトコルを介してログテーブルに非同期に挿入されるときに発生するデッドロックは修正されます。
dictGetOrDefault for RangeHashedDictionaryのデフォルトパラメーターの遅延実行は修正されています。
groupArraySortedの複数のエラーが修正されました。
Keeperのスタンドアロンバイナリファイルの再構成は修正されています。
S3テーブルエンジンでのsession_tokenの使用は固定されています。
次の問題が修正されました。uniqExact集計関数が誤った結果を生成する可能性があります。
データベース表示のエラーが修正されました。
マテリアライズド列が使用されるRabbitMQストレージのロジックエラーが修正されました。
CREATE OR REPLACE DICTIONARYは固定です。
外部ON CLUSTERオプションを使用したATTACHクエリは修正されています。
有向非巡回グラフ (DAG) 分割の問題は修正されています。
失敗したRESTOREコマンドを期待どおりに停止できない問題を修正しました。
互換性の設定では、想定どおりに無効にできます。
復元プールでのキューイングは許可されています。
UUIDを使用してsystem.partsからデータを読み取ると、エラーが報告されます。
ウィンドウビューのクラッシュは修正されています。
非ネイティブ整数が使用されるときに発生する繰り返しの問題は修正されています。
クライアントの
-s
パラメーターは固定です。arrayPartialReverseSort関数の使用によるプログラムクラッシュが修正されました。
一定の位置から文字列内で実行される検索は固定されています。
DateTime64を使用すると、addDaysによるエラーが発生します。
データが非同期的に挿入されるとき、重複データがsystem.part_logに存在する。
system.partsの非準備状態は固定されます。
SharedMergeTreeでの潜在的なジャンクデータとデータ損失の問題は修正されました。
分散キャッシュメトリックは、使用可能なすべてのリージョンから取得できます。
DISTINCTとウィンドウ関数の両方の使用によるクラッシュは修正されています。
DistrCacheの改善: 構成ファイルに関連するより多くのイベントが導入され、より詳細で明確なエラーメッセージが返されます。
クラスターのデフォルトデータベースの承認の問題が修正されました。
MemoryTrackerSwitcherが特定のメモリ使用量を正しく追跡できない問題を修正しました。
次の問題が修正されました。メモリ統計エラーが原因でクエリが予期せず終了します。
OrderByLimitByDuplicateEliminationVisitorのクロスサブクエリの問題は修正されました。
TTL実行における下位互換性の問題は修正されています。
分散キャッシュの接続と接続プールが改善されます。
ReplicatedデータベースエンジンにTTLが設定されている場合、クラッシュが発生する可能性があります。
ActionsDAG::splitの結果として生成された新しい入力の名前の重複は回避されます。
アナライザー: RewriteAggregateFunctionWithIfPassの問題が修正されました。
既定の式を持つCREATE TABLE ASクエリは固定されています。
アナライザー: クエリツリーのサイズ検証の問題が修正されました。
GLOBAL INに関連するエイリアスの問題は修正されました。
02228_merge_tree_insert_memory_usageにはランダム設定は使用されません。
アナライザー: AggregateFunctionsArithmeticOperationsPassの問題が修正されました。
アナライザーで構成されたリモートクエリのINTERPOLATEに関連するエイリアスの問題が修正されました。
特殊なマクロ {uuid} と {database} は、レプリケートされたデータベースのZooKeeperパスで使用できます。
例外メッセージが更新されます。
ContextAccessのweakポインターは、セキュリティを確保するためにキャプチャされます。
ハッシュ辞書操作の短絡中に発生するエラーは修正されます。
UniqInjectiveFunctionsEliminationPassとuniqCombinedのクラッシュは修正されました。
ServerUUIDとZooKeeperの初期化順序は固定されています。
継続的インテグレーション (CI): AArchビルドがバックポートワークフローに追加されます。
パックドパーツストレージでのgetFileLastModifiedの問題は修正されました。
定義者のバックアップからの復元の問題は修正されました。
totalqpslimitexachedが再試行可能なS3エラーであることを確認するテストは、手動でバックポートされます。
次の問題が修正されました。OSS QPSの制限により、挿入が中断されます。
MySQL辞書のソースは修正されています。
MergeTreeReadPoolBase::createTaskでセグメンテーションフォールト (SIGSEGV) を修正しようとする努力が払われる。
統合テストランナーにjwcryptoが追加されます。
MergeTreePrefetchedReadPoolがより安全になります。
次のまれなエラーが修正されました。ALTER操作後、SELECTクエリが失敗し、エラー
が発生する可能性があります。 予想されるtype_XXX。 type_YYYを取得しました。
が報告されます。02362_part_log_merge_algorithmフレークテストは修正されました。
データがSharedMergeTreeに挿入されると、データが失われます。
セカンダリクエリのGROUP BYキーからサーバー定数を削除しない設定は削除されます。
ネストされたラムダのキャプチャは固定されています。
ユーザースペースページキャッシュが使用されていない場合、統計は収集されません。
アナライザーは必要な列のみを読み取ります。
次の問題が修正されました。StorageS3の再起動後にextra_credentialsが失われます。
並列読み出しが使用される場合、S3読み出しは適切に取り消される。
Linux上のARM64のtest_odbc_interactionは修正されています。
S3Queue: tracked_file_ttl_secおよびtraked_files_limitの失敗したファイルが処理されます。
コンポーネントのチェックサムは、削除前にのみチェックされます。
一部のマージ結合で無効な列の問題が修正されました。
CREATE AS SELECTステートメントのスカラーの問題が修正されました。
ARMのtest_short_strings_aggregationは固定です。
AArch64のtest_disk_typesは修正されています。
AArch64のtest_catboost_evaluateは修正されています。
冗長なDISTINCTは、窓関数から除去される。
レプリケートされたデータベースでのflatten_nestedの問題は修正されました。
test_non_default_compression/test.py::test_preconfigured_deflateqpl_codecはARMに対して無効です。
02124_insert_deduplication_token_multiple_blocksは修正されます。
範囲が削除されると、サービスの再起動後に交差したデータ部分が存在する問題が修正されました。
新しいアナライザーと並列レプリカを使用してマテリアライズドビューからデータを読み取ると、誤った結果が生成されます。
max_retries_before_automatic_recoveryパラメーターで指定された連続回数を超えてDDLタスクが失敗した場合、システムは自動的にデータベースレプリカを失われたとマークし、回復プログラムを開始します。 また、DDLタスクの実行中にエラーが発生した場合、DDLタスクがスキップされる場合があります。
任意の深さのネストされたサブクエリを持つマテリアライズドビュー内でIN関数を使用するときに発生するアナライザーの問題は修正されています。
keeper-clientのfind_super_nodesおよびfind_big_familyコマンドの問題は修正されました。
ラムダの実行名が更新されます。
次の問題が修正されました。新しいバージョンは、リリースブランチで自動的に作成されます。
信頼できないバイナリ入力データは、より安全な方法で逆シリアル化されます。
次の問題が修正されました。バックアップおよび復元中、テーブルメタデータから投影が削除された後も、コンポーネントに投影が残っています。
配列 (Nothing)
は、マップ (Nothing, Nothing)
に変換できます。アナライザーのCOLUMNSの問題は修正されています。
current_parts.size() およびfuture_parts.size() にアクセスする前にロックが取得されます。
Keeperのtext_logは無視されます。
CREATE TABLE AS MaterializedView
の使用時に発生するロジックエラーは修正されました。アダプティブ粒度を使用しないテーブルの場合、FINALのクエリを実行すると誤った結果が生成されます。
クォーラム挿入トランザクションが取り消されたときに発生するロジックエラーが修正されました。
アナライザーを使用する場合のSQLセキュリティアクセスチェックは修正されています。
クエリキャッシュ: 異なるデータベースに対する同一のクエリは、異なるクエリと見なされます。
select_sequential_consistencyのエラーが修正されました。
アナライザー修正: DAGには補間式のみを使用できます。
InterpreterCreateQuery.cppが更新されました。
Bufferテーブルにprewhere句が使用されているときに発生するロジックエラーは修正されています。
CI: 再利用可能なステージワークフローymlにキーが追加されます。
同時更新によりコミットが失敗すると、ファイルシステム (FS) メタデータキャッシュが無効になります。
CPUまたは実プロファイラーによってトリガーされるSIGSEGVは固定されています。
コピーバックアップ中に正しいフォールバックが実装されます。
enable_vertical_finalは無効です。
AddressSanitizer (ASan) イメージが最適化されています。
qps_limit_exceededがテストされます。
次の問題が修正されました。〜WriteBufferFromFileDescriptorがStatusFileの例外をキャプチャしないため、プログラムはアボートします。
isNullまたはisNotNulおよびアナライザーの早期コンスタントフォールディングの問題は修正されています。
セッション終了中にダイジェストの不一致を引き起こすApsaraDB for ClickHouseのエラーが修正されました。
証明書のリロード中に証明書チェーンがリロードされます。
SharedMergeTreeの空のパーツは、指定されたTTLの有効期限が切れるとクリアされます。
ALTERステートメントをレプリケーションに使用するときに発生するSQLセキュリティに関する問題は修正されています。
AccessControlが破壊されたときに発生するクラッシュを修正するために、明示的なシャットダウンが追加されます。
パフォーマンス向上
SELECTのGROUP BYキーのmin、max、any、およびanyLastアグリゲータは削除されます。
複数のヌル可能な列の場合のシリアル化された集計方法のパフォーマンスが向上します。
すべての結合のパフォーマンスは、結合構築の出力遅延によって改善されます。
ArgMin、ArgMax、any、anyLast、およびanyHeavyの集約関数、ならびにORDER BY (u8、u16、u32、u64、i8、i16、i32、またはi64を使用する) LIMIT1が改善される。 u8、u16、u32、およびu64は、符号なし整数である。 i8、i16、i32、およびi64は符号付き整数です。
BIGINTおよびBIG DECIMALタイプの条件付きSUMおよびAVG操作のパフォーマンスは、ブランチの予測ミスを減らすことによって最適化されます。
アクティブなミューテーションを使用したSELECTクエリのパフォーマンスが向上しました。
列フィルタリングの詳細は、基になるデータ型がNumberではない列が
result_size_hint = -1
を使用してフィルタリングされないように最適化されています。 場合によっては、ピークメモリ使用量を元の44% に減らすことができます。主キーによって使用されるメモリが少なくなります。
主キーおよび他の操作のメモリ使用量が改善される。
テーブルの主キーは、最初のアクセス時にゆっくりとロードされます。
説明プライマリキーの遅延読み込みは、MergeTreeのprimary_key_lazy_load設定を使用して実装されます。 デフォルトでは、設定は有効です。 次のセクションでは、設定の長所と短所について説明します。
利点:
未使用のテーブルの主キーはロードされません。
メモリが不十分な場合は、サーバーの起動時ではなく、最初の使用時に例外がスローされます。
短所:
主キーの遅延読み込みは、接続が受け入れられる前ではなく、最初のクエリで行われます。
突然のリクエストの流入の場合にエラーが発生する可能性があります。
ベクトル化関数dotProductは、ベクトル検索を容易にする。
テーブルの主キーにほとんど役に立たない列が含まれている場合は、これらの列をメモリに保持しないでください。
説明これは、primary_key_ratio_of_unique_prefix_values_to_skip_suffix_columnsを設定することで実装できます。
デフォルト値: 0.9 これは、複合主キーの場合、列が少なくとも90% の時間その値を変更した場合、後続の列はロードされないことを示します。
multiIf関数が数値結果を返すと予想される場合、システムはカラム実行を使用して関数呼び出しを最適化します。 これは、multiIfなどの関数が実行され、大量のデータが存在する場合、システムが列ごとに効率的にデータを同時に処理しようとすることを示しています。
ビット単位のAND (&) 演算子は、論理AND (&&) 演算子を置き換えます。 これは、フィルタ結合プロセスの実装を変更し、フィルタ結合がコンパイラによって自動的にベクトル化されることを可能にする。 この最適化は、ベクトル化された操作を使用してデータベースクエリの実行パフォーマンスを向上させる試みです。 このように、プロセッサの機能を使用してパフォーマンスを向上させることができます。
ThreadFuzzerのミューテックスのパフォーマンスは、100% な改善を実現するために最適化されています。
分散クエリの接続を同時に実行できないために発生するパフォーマンスの問題が修正されました。
insertManyFromがinsertFromを繰り返し呼び出した場合に発生するパフォーマンスの低下は修正されています。
dotProduct関数は、不要で高価なメモリコピーを省略するように最適化されます。
ファイルシステムのキャッシュ操作を使用することで、ロックの競合が軽減されます。
ColumnString::replicateは最適化され、memcpySmallAllowReadWriteOverflow15Implは組み込みのmemcpyに置き換えられません。 この最適化により、x86-64のアーキテクチャでColumnString::replicateの速度が2.46倍になりました。
256ビット整数の印刷速度は30倍に増加しました。
構文エラーのあるクエリに正規表現を持つCOLUMNSマッチャーが含まれている場合、複数のコンパイルがトリガーされ、解析速度に影響します。