Neo4j のパフォーマンスに関する内部実装の理解と、それを踏まえた上でパフォーマンスを向上させるための工夫について書かれた記事が Graphable より公開されました。
ハイレベルな内容に留まりながら非常に明快な説明をしている良い記事ですので、本ブログでも紹介することにしました。
本記事を読むと、Graph Native なグラフデータベースとはどういう意味なのか、Neo4j の 3 種類のインデックスタイプがどう機能しているのか、どのようにディスクとメモリが活用されているのかについて概要を理解することができます。
同じく Index-Free Adjacency につても紹介されています。こちらは、本ブログのこちらの記事 でも別の切り口から説明しています。
また、本記事で紹介されている以下 6 つの工夫については、基本的なものも含みますが、ぜひ頭に入れておくと良いでしょう。
EXPLAIN/PROFILE
を利用したクエリの実行計画の分析
NFS/NAS
ではなく EXT4/XFS
のファイルシステムの利用
dbms.directories.data
、トランザクションログは dbms.directories.transaction.logs.root
で設定変更可能。詳細はドキュメントを参考のことneo4j.conf
の dbms.memory.heap.{initiali_size,max_size}
で変更可能Total Physical Memory = Heap + Page Cache + OS Memory