Đây là theo dõi tới can't reproduce/verify the performance claims in graph databases and neo4j in action books. Tôi đã cập nhật thiết lập và kiểm tra, và không muốn thay đổi câu hỏi gốc quá nhiều.hiệu suất neo4j so với mysql (làm thế nào nó có thể được cải thiện?)
Toàn bộ câu chuyện (kể cả kịch bản vv) là trên https://baach.de/Members/jhb/neo4j-performance-compared-to-mysql
phiên bản ngắn: trong khi cố gắng xác minh những tuyên bố hiệu suất thực hiện trong cuốn sách 'Graph Cơ sở dữ liệu' Tôi đến kết quả như sau (truy vấn một n bộ dữ liệu ngẫu nhiên có chứa người, với 50 bạn bè mỗi):
My results for 100k people
depth neo4j mysql python
1 0.010 0.000 0.000
2 0.018 0.001 0.000
3 0.538 0.072 0.009
4 22.544 3.600 0.330
5 1269.942 180.143 0.758
"*": chạy duy nhất mà thôi
My results for 1 million people
depth neo4j mysql python
1 0.010 0.000 0.000
2 0.018 0.002 0.000
3 0.689 0.082 0.012
4 30.057 5.598 1.079
5 1441.397* 300.000 9.791
"*": Độc thân chạy chỉ
Sử dụng 1.9.2 trên ubuntu 64bit Tôi có neo4j.properties thiết lập với các giá trị:
neostore.nodestore.db.mapped_memory=250M
neostore.relationshipstore.db.mapped_memory=2048M
và neo4j-wrapper.conf với:
wrapper.java.initmemory=1024
wrapper.java.maxmemory=8192
truy vấn của tôi để neo4j trông giống như này (sử dụng api REST):
start person=node:node_auto_index(noscenda_name="person123") match (person)-[:friend]->()-[:friend]->(friend) return count(distinct friend);
Node_auto_index được đặt ra, rõ ràng là
Có điều gì tôi có thể làm để tăng tốc độ neo4j lên (nhanh hơn sau đó mysql) không?
Và cũng có another benchmark in Stackoverflow cùng một vấn đề.
Xin lỗi, kịch bản trong neo4j đang hoạt động là 'trả lại tất cả bạn bè của bạn bè ...', không tìm đường dẫn giữa bạn bè đã cho. Tôi đang đề cập đến chương 1 của Neo4j trong hành động. Các câu lệnh sql là về việc tìm kiếm tất cả bạn bè, và do đó là kết quả trong các bảng (các bản ghi được trả về). Và quan trọng hơn: Tôi hoàn toàn không thể tái tạo 3 giây. Truy vấn, ví dụ: 'start person = node (100) match (person) - [: friend] ->() - [: friend] ->() - [: friend] ->() - [: friend] -> (bạn) trả về đếm (bạn), 'mất 28,9 giây. Rất lạ ... –
Và vâng: trên bộ dữ liệu 1m tìm đường đi giữa A và B cho khoảng 2390 ms trên mysql và chỉ khoảng 25ms trên neo4j. –
aka neo4j thể hiện sức mạnh của nó khi nói đến các mối quan hệ truy vấn (đường dẫn) thay vì các nút, phải không? –