Goインタープリターの高速化:C++に追いつく

2025-04-05
Goインタープリターの高速化:C++に追いつく

PlanetScaleを支えるオープンソースデータベースVitessに搭載されているSQL評価エンジンは、当初、パーサーによって生成されたSQL ASTを直接操作するAST評価器として実装されていました。この1年間、それを徐々に仮想マシンに置き換えてきました。この仮想マシンはGoでネイティブに記述されているにもかかわらず、MySQLの元のC++評価コードと同等の性能を発揮します。最も注目すべきは、新しい仮想マシンは元のGoインタープリターよりもはるかに高速でありながら、繰り返しメンテナンスが容易であることが証明されていることです。この驚くべき結果を得るために私たちが行った実装の選択について見ていきましょう。

続きを読む
開発

PlanetScale、EBSの真の故障率を暴露:二元的ではなく、継続的な性能劣化

2025-03-18
PlanetScale、EBSの真の故障率を暴露:二元的ではなく、継続的な性能劣化

Amazon EBSの大規模利用に基づき、PlanetScaleは、EBSの真の故障率がAWSのドキュメントで示唆されているよりもはるかに高いことを明らかにしました。記事は、EBSの「遅さ」が完全な故障よりもはるかに一般的であり、AWSの性能保証を満たしていても、頻繁な性能変動が発生し、アプリケーションの停止につながることを強調しています。この劣化はランダムではなく、システムの複雑性によって生じるものです。PlanetScaleは、監視とEBSボリュームの自動置換によって問題を軽減し、最終的にネットワークストレージによるパフォーマンスの問題を回避するためにPlanetScale Metalを導入しました。

続きを読む

PlanetScale Metal:クラウドデータベースのI/Oボトルネックを解消

2025-03-13
PlanetScale Metal:クラウドデータベースのI/Oボトルネックを解消

この記事では、磁気テープからハードディスクドライブ、そしてソリッドステートドライブ(SSD)に至るまでのコンピューターストレージ技術の進化の歴史と、クラウドコンピューティングがもたらすI/Oパフォーマンスの課題について探ります。従来のクラウドデータベースサービスは一般的にネットワーク接続ストレージ(NAS)を使用しており、高いレイテンシとIOPSの制限につながります。PlanetScaleのMetal製品は、ローカルNVMeドライブを使用してコンピューティングとストレージを直接接続することで、極めて低いレイテンシ、無制限のIOPS、高いデータ耐久性を達成し、クラウドデータベースのI/Oボトルネック問題を完全に解決します。

続きを読む
テクノロジー ストレージ技術

データベースカウンタのロック競合を克服する:スロット付きカウンタパターン

2025-02-04
データベースカウンタのロック競合を克服する:スロット付きカウンタパターン

高並行処理のシナリオにおいて、データベースカウンタの更新はしばしばロック競合を引き起こし、パフォーマンスの低下やデッドロックさえも招きます。この記事では、「スロット付きカウンタ」と呼ばれるパターンを紹介し、カウンタを複数のスロットに分散することで、ロック競合を効果的に軽減する方法を説明します。このパターンは、更新操作を複数の行に分散することで、単一行更新のボトルネックを解消し、並行処理のパフォーマンスを向上させます。GitHubも同様のソリューションを使用してカウントの問題を解決しており、その中心的な考え方は、更新操作を複数の行に分散し、最後に集計して最終的なカウントを得ることです。

続きを読む