MySQLはMemSQLより百万倍高速です

数日前、世界のテクノロジープレスはMemSQL PRを広めました。NikitaShamgunov( shamg )の新世代データベースで、MySQLの30倍の速度を示し、同時に「デフォルトで信頼できる」と言われていますそれらをサイト上で。



MySQLの代表者は、これらの明らかなマーケティングスローガンに答えようとは考えていません。 しかし、これは元MySQL従業員のDomas Mituzasで、現在はFacebookとWikipediaのデータベーススペシャリストですが、それでも我慢できず、 私たちがだまされている方法を正確に把握することにしました。 MySQLの数百、数千、さらには数百倍も遅い。



「生産性の30倍の向上」に関する主な論文は、判明したとおり、デフォルトパラメータを使用したMemSQLに対するデフォルトパラメータを使用したMySQLパフォーマンステストから導き出されました。 システムは完全に異なる環境で動作するように強制されているため、不正行為はすでに始まっています。たとえば、MemSQLのメモリバッファーは実際には無制限であり、InnoDBではMySQL 5.5では128 MBに設定されます(これは5.1の16倍です) )



書き込みベンチマークの場合、MemSQLは2 GBのトランザクションログと比較し、InnoDBは10 MBのログと比較します。



同時に、どのベンチマークでも、Domas Mituzas氏は、信頼性が重要だと書いています。 InnoDBはトランザクションがディスクに保存されていることを実際に検証しますが、MemSQLの「デフォルトの信頼性」は、レコードがトランザクションログに記録されることを意味しますが、ディスクに保存されることを保証するものではありません。 MemSQLのトランザクションバッファーは、 innodb_flush_log_at_trx_commit=2



モードとほぼ同様にinnodb_flush_log_at_trx_commit=2



ます。 MemSQLで完全なトランザクション保護を有効にすると、 悲痛な光景になります。トランザクションログを記録するためにバックグラウンドプロセスが50ミリ秒ごとに起動します。



結果はどうなりますか? MemSQLは、信頼できるトランザクションモードでは500倍遅くなります。



読み取りモードでは、MemSQLはSELECT COUNT(*)



要求で毎秒800万行をスキャンできます。これはすばらしい結果です。 しかし、ここにリクエストがあります:



SELECT * FROMテーブルORDER BY id DESC LIMIT 5;



このようなリクエストはどこにでもあり、さまざまなリストのトップを表示します。 MySQLはそれを実行し、通常はレコードからレコードへインデックスに沿って移動しますが、MemSQLはテーブル全体をグラインドし、クエリを実行するために再度ソートすることを強制されます。 SELECT MAX(id)



クエリでさえ、テーブル全体をクロールします。



したがって、MemSQLはMySQLの1000倍、または100万倍遅いです。 単純な読み取り要求。



一般的に、Domas Mituzasは、MemSQLは優れた開発であり、一部のタスクで利用可能な最速のMySQLプロトコルであると結論付けていますが、MySQL Clusterよりも先を行っておらず、MySQL Clusterの開発者も非常に高いパフォーマンスを宣言しています。 ただし、MemSQLはより一般的な使用パターンに合わせて適切に最適化する必要があります。



All Articles