Microsoftは7月3日(米国時間)、「Introducing UTF-8 support for SQL Server - Microsoft Tech Community - 734928」において、SQL Server 2019にUTF-8文字エンコーディングのサポートが導入されたと伝えた。

同機能はこれまで長い間ユーザーから求められていたもので、既存のシステムをグローバルに利用できる多言語データベースアプリケーションに拡張したいユーザーに役立つ機能だという。

SQL Server 2019はUTF-8以外にUTF-16もサポートしている。Microsoftはこの2つの文字エンコーディングの違いを次のように説明している。

  • UTF-8は数字と英語を含む一般的なASCII文字を1バイトでエンコードする。ASCII文字(0〜127)には1バイト、コードポイント128〜2047には2バイト、コードポイント2048〜65535には3バイト、コードポイント65536から1114111には4バイトを使用している

  • UTF-16はコードポイント0〜65535のすべての文字に対して最低でも2バイトを利用、コードポイント65536〜1114111には4バイトを使用する

  • コードポイントと使用するバイト数 - 資料: Microsoft提供

    コードポイントと使用するバイト数 - 資料: Microsoft

Microsoftはこうした違いを踏まえ、どのようなケースでUTF-8を採用し、どのようなケースでUTF-16を採用したほうがよいかを決定する指針を紹介している。指針のポイントをまとめると次のとおり。

  • データセットとして日本語、中国語、韓国語を主に使っている場合はUTF-16。日本語、中国語、韓国語はコードポイント2048〜65535までの範囲に入っており、UTF-8は3バイト、UTF-16は2バイトと、UTF-16のほうがデータ量でもパフォーマンスの面でも有利

  • データセットとして主にASCII文字を使っている場合はUTF-8。データ量を抑えることができるほか、集中的なリード/ライトでUTF-16よりも高いパフォーマンスが期待できる。SORTやMERGEといった操作もUTF-16よりもUTF-8のほうが性能を期待できる

記事ではさらにデータをUTF-8に変換するための方法なども紹介している。SQL Serverは人気の高いデータベース管理システムで、MySQLおよびOracleとともにシェアが多いデータベースとして取り上げられることが多い。