2013-03-12 27 views
5

Đã thực hiện một vài thử nghiệm.Chèn hiệu suất có và không có Chỉ số

Dựa trên một số gợi ý tuyệt vời của Wes v.v., tôi đã điều chỉnh một số thuộc tính neo4j không có bộ nhớ đệm để chèn trên quy mô lớn trong môi trường đa luồng và hiệu suất không kém.

Tuy nhiên, khi tôi giới thiệu chỉ mục (trên các nút), hiệu suất sẽ giảm đi rất nhiều. Sự khác biệt có thể dễ dàng gấp 5 lần. Có cài đặt cấu hình nào để làm cho nó tốt hơn không?

Cảm ơn trước,

Sachin

Neo4j phiên bản - 1.8.1; JVM - 1.6

Trả lời

4

Chèn các nút (hoặc các mối quan hệ) vào chỉ mục Lucene là tốn kém. Lucene là một công cụ mạnh mẽ nhưng phức tạp, được thiết kế cho tìm kiếm toàn văn/từ khóa. So với cơ sở dữ liệu trống, nó khá chậm.

Đây là lý do tại sao hầu hết các công cụ chèn số lượng lớn làm việc lập chỉ mục đồng bộ, như hàng loạt Inserter Michael:

http://jexp.de/blog/2012/10/parallel-batch-inserter-with-neo4j/

Một số giao dịch thậm chí né tránh, hoặc viết các tập tin lưu trữ trực tiếp:

http://blog.xebia.com/2012/11/13/combining-neo4j-and-hadoop-part-i/

Để cải thiện hiệu suất, sử dụng đĩa SSD có thể giúp ích. Nhưng như Neo4j là một cơ sở dữ liệu giao dịch ACID hoàn toàn, và chỉ số Lucene được kết hợp chặt chẽ với các giao dịch (đó là điều tốt), bạn không thể làm gì khác ngoài việc tối ưu hóa cơ sở hạ tầng để có hiệu suất ghi tốt nhất.

+1

+1 để có đề xuất tốt. Tôi đang làm việc trên một chương trình để viết các tập tin lưu trữ trực tiếp trong C. Nó sẽ đá. Nhưng tôi không có kế hoạch để hỗ trợ chỉ số ban đầu (hoặc có thể bao giờ) - thậm chí không nhìn vào định dạng tập tin lucene được nêu ra. OP có thể xem xét việc viết các chỉ mục sau các nút, trong các giao dịch hàng loạt của riêng chúng. –

+0

Wow, nghe có vẻ thú vị. Cuộc đua cho hiệu suất chèn Neo4j hàng đầu là trên! :) –

+0

Cho đến nay, các nút 1B trong 82 giây (không có thuộc tính hoặc liên quan, vô ích!). Hầu như có rels làm việc - mất khá nhiều công việc hơn để làm rels. –

0

Chỉ trong trường hợp câu trả lời bổ sung này vẫn còn sử dụng cho bất cứ ai chạy Neo4j trên một hệ thống tập tin ext4 trong Linux:

Bằng kinh doanh một số an toàn giao dịch (không đáng kể vào/hệ thống USV pin đệm hoặc máy tính xách tay), hiệu suất ghi có thể tăng lên gấp 10-15 lần!

Đọc thêm trong bài đăng blog gần đây: http://structr.org/blog/neo4j-performance-on-ext4

Các vấn đề liên quan