Tag Archives: utf8

Branchless UTF-8 解碼器

看到「A Branchless UTF-8 Decoder」這篇,先來回憶一下「非常經典的 UTF-8...」這篇,以及裡面提到的 encoding: 因為當初在設計 UTF-8 時就有考慮到,所以 decoding 很容易用 DFA 解決,也就是寫成一堆 if-then-else 的條件。但現代 CPU 因為 out-of-order execution 以及 pipeline 的設計,遇到 random branch 會有很高的效能損失,所以作者就想要試著寫看看 branchless 的版本。 成效其實還好,尤其是 Clang 上說不定在誤差內: With GCC 6.3.0 on an i7-6700, my decoder is about … Continue reading

Posted in Computer, Library, Murmuring, Programming, Software|Tagged , , , , , , , , , , , |Leave a comment

MySQL 8.0 對 4 bytes UTF-8 的效能改善

在「MySQL 8.0: When to use utf8mb3 over utf8mb4?」這邊提到了 MySQL 對 utf8 以及 utf8mb4 的故事,以及在 MySQL 8.0 預期的效能提昇: 可以看到 Oracle 的團隊花了不少力氣提昇 utf8mb4 的效能。另外提到了在 5.7 的時候將 row format 的預設值轉成 DYNAMIC: MySQL 5.7 (2015) added some optimizations such as a variable length sort … Continue reading

Posted in Computer, Database, Murmuring, MySQL, Software|Tagged , , , , , , , , , , , , , |Leave a comment

將 latin1 的表格轉換成 UTF-8 表格...

Percona 的人寫了一篇「utf8 data on latin1 tables: converting to utf8 without downtime or double encoding」,告訴你怎麼將 latin1 的 TEXT 欄位轉成 UTF-8,文章內有提到利用 BLOB 轉。 不確定同樣方式能不能做在 VARCHAR 上面 (用 BINARY 轉?),但不知道會不會有 UNIQUE + prefix support 的問題?有遇到再來測試看看...

Posted in Computer, Database, Murmuring, MySQL, Software|Tagged , , , , , , , |1 Comment

MySQL 的 Unicode 支援程度

MySQL 5.5 之前的版本只支援 Unicode 3.0 (1999 年 9 月發表),但自從 MySQL 5.5 版開始支援 Unicode 5.0 (2006 年 7 月發表),對於常用的 utf8 encoding 就有一些變化要注意... 參考維基百科上對 Unicode 版本的說明:「Unicode#Versions」,以及 MySQL 5.5 的文件:「MySQL :: MySQL 5.5 Reference Manual :: 10.1.10 Unicode Support」。 在 MySQL 5.5 之前,UTF-8 … Continue reading

Posted in Computer, Database, Murmuring, MySQL, Programming, Software|Tagged , , , |Leave a comment