不會項目管理的研發不是好loder(^_^ ^_^),開個玩笑,目的是想說項目管理很重要,研發同胞們需要重視、重視、重視(重要的事情說三遍)。隨着項目業務擴展,不再是停留在基本某一業務範圍,海量數據接踵而至,接口性能明顯出現瓶頸,性能優化迫在眉睫。。。
(1)EXPLAIN + 執行的cql語句
僅僅查看執行計劃,不執行語句
(2)PROFILE + 執行的cql語句
運行語句,並全程監督資源使用情況
2、 使用建議
1)相關主鍵創建索引 語法格式CREATE INDEX ON: 標籤(待查字段);
①模式索引:模式索引和關係數據庫中的索引很相似, 每一個索引會對應一個標籤和一組屬性,無論是更新還是刪除節點,索引都會自動更新或者刪除,因此該種創建索引的方式更適用。
注意:索引狀態是ONLINE才能生效,否則剛剛建的索引是無效的。
4)不必要的數據,儘可能早的過濾掉,減少後期處理的數據量;
5)避免返回整個節點,返回其中需要的數據。
二、優化neo4j配置文件
對neo4j.conf文件並進行相應修改。通過添加jvm虛擬環境可以提高數據庫的查詢速度,即取消neo4j配置文件中關於dbms.memory.heap.initial_size=512m;dbms.memory.heap.max_size=512m兩行的註釋,並做合適的修改(最大堆內存越大越好,但是要小於機器的物理內存)。
三、進階方案解決性能問題
1、合理引入中間件
eg:涉及內容關鍵字檢索,可以使用elasticSearch,避免直接從neo4j搜索查詢,若能結合redis及內存緩存獲取詳細資源信息,搜索只返回主鍵,還能進一步提交查詢效率,用戶體驗大幅提升;
涉及大量查詢可以使用redis作爲neo4j的一個緩存庫,既能提高性能,也能避免neo4j的資源消耗;
2、分庫存儲,充分利用neo4j的圖存儲和查詢特點,neo4j中只提供圖的存儲和查詢功能,節點的屬性信息保存在mongodb(或其他NoSql 數據庫中---字段可以直接存儲)進行關聯查詢,各取所長,充分利優勢,優化性能;
3、使用neo4j企業版高可用、集羣方案,適用於不差錢的企業組織哈。