OrientDB - Hiệu chỉnh Hiệu suất
Trong chương này, bạn có thể nhận được một số mẹo chung về cách tối ưu hóa ứng dụng sử dụng OrientDB của mình. Có ba cách để tăng hiệu suất cho các loại cơ sở dữ liệu khác nhau.
Document Database Performance Tuning - Nó sử dụng một kỹ thuật giúp tránh tạo tài liệu cho mọi tài liệu mới.
Object Database Performance Tuning - Nó sử dụng các kỹ thuật chung để cải thiện hiệu suất.
Distributed Configuration Tuning - Nó sử dụng các phương pháp luận khác nhau để cải thiện hiệu suất trong cấu hình phân tán.
Bạn có thể điều chỉnh hiệu suất chung bằng cách thay đổi cài đặt Bộ nhớ, JVM và Kết nối từ xa.
Cài đặt bộ nhớ
Có các chiến lược khác nhau trong thiết lập bộ nhớ để cải thiện hiệu suất.
Cài đặt Máy chủ và Nhúng
Các cài đặt này hợp lệ cho cả thành phần Máy chủ và JVM nơi ứng dụng Java được chạy bằng OrientDB ở chế độ Nhúng, bằng cách sử dụng trực tiếp plocal.
Điều quan trọng nhất khi điều chỉnh là đảm bảo cài đặt bộ nhớ là chính xác. Điều có thể tạo ra sự khác biệt thực sự là sự cân bằng phù hợp giữa heap và bộ nhớ ảo được sử dụng bởi Bản đồ bộ nhớ, đặc biệt là trên các tập dữ liệu lớn (GB, TB và hơn thế nữa) trong đó cấu trúc bộ nhớ đệm trong bộ nhớ ít hơn IO thô.
Ví dụ: nếu bạn có thể gán tối đa 8GB cho quy trình Java, thì tốt hơn nên chỉ định vùng nhớ đệm nhỏ và bộ đệm ổ đĩa lớn (bộ nhớ off-heap).
Hãy thử lệnh sau để tăng bộ nhớ heap.
java -Xmx800m -Dstorage.diskCache.bufferSize=7200 ...
Các storage.diskCache.bufferSize cài đặt (với bộ nhớ "cục bộ" cũ, nó là file.mmap.maxMemory) bằng MB và cho biết dung lượng bộ nhớ sử dụng cho thành phần Disk Cache. Theo mặc định, nó là 4GB.
NOTE - Nếu tổng dung lượng tối đa của heap và bộ đệm cache của ổ đĩa quá cao, nó có thể khiến hệ điều hành hoán đổi với tốc độ chậm rất lớn.
Cài đặt JVM
Cài đặt JVM được mã hóa trong các tệp hàng loạt server.sh (và server.bat). Bạn có thể thay đổi chúng để điều chỉnh JVM theo cách sử dụng và cài đặt hw / sw của bạn. Thêm dòng sau vào tệp server.bat.
-server -XX:+PerfDisableSharedMem
Cài đặt này sẽ vô hiệu hóa việc ghi thông tin gỡ lỗi về JVM. Trong trường hợp bạn cần định cấu hình JVM, chỉ cần xóa cài đặt này.
Kết nối từ xa
Có nhiều cách để cải thiện hiệu suất khi bạn truy cập cơ sở dữ liệu bằng kết nối từ xa.
Chiến lược tìm nạp
Khi bạn làm việc với cơ sở dữ liệu từ xa, bạn phải chú ý đến chiến lược tìm nạp được sử dụng. Theo mặc định, máy khách OrientDB chỉ tải bản ghi có trong tập kết quả. Ví dụ: nếu một truy vấn trả về 100 phần tử, nhưng nếu bạn vượt qua các phần tử này từ máy khách, thì máy khách OrientDB sẽ tải các phần tử một cách lười biếng với một cuộc gọi mạng nữa đến máy chủ cho mỗi bản ghi bị bỏ lỡ.
Nhóm kết nối mạng
Mỗi máy khách, theo mặc định, chỉ sử dụng một kết nối mạng để nói chuyện với máy chủ. Nhiều luồng trên cùng một máy khách chia sẻ cùng một nhóm kết nối mạng.
Khi bạn có nhiều luồng, có thể xảy ra tắc nghẽn vì mất nhiều thời gian để chờ kết nối mạng miễn phí. Đây là lý do tại sao điều quan trọng là phải cấu hình nhóm kết nối mạng.
Cấu hình rất đơn giản, chỉ có 2 tham số -
minPool- Đây là kích thước ban đầu của nhóm kết nối. Giá trị mặc định được định cấu hình dưới dạng tham số chung "client.channel.minPool".
maxPool- Đây là kích thước tối đa mà nhóm kết nối có thể đạt được. Giá trị mặc định được định cấu hình là tham số chung "client.channel.maxPool".
Nếu tất cả các kết nối chung đều bận, thì luồng máy khách sẽ đợi kết nối miễn phí đầu tiên.
Ví dụ về lệnh cấu hình bằng cách sử dụng thuộc tính cơ sở dữ liệu.
database = new ODatabaseDocumentTx("remote:localhost/demo");
database.setProperty("minPool", 2);
database.setProperty("maxPool", 5);
database.open("admin", "admin");
Điều chỉnh cấu hình phân tán
Có nhiều cách để cải thiện hiệu suất trên cấu hình phân tán.
Sử dụng giao dịch
Ngay cả khi bạn cập nhật đồ thị, bạn phải luôn làm việc trong các giao dịch. OrientDB cho phép bạn làm việc bên ngoài chúng. Các trường hợp phổ biến là truy vấn chỉ đọc hoặc các hoạt động lớn và không hiện tại có thể được khôi phục trong trường hợp thất bại. Khi bạn chạy trên cấu hình phân tán, việc sử dụng các giao dịch sẽ giúp giảm độ trễ. Điều này là do hoạt động phân tán chỉ xảy ra tại thời điểm cam kết. Phân phối một hoạt động lớn hiệu quả hơn nhiều so với chuyển nhiều hoạt động nhỏ, vì độ trễ.
Nhân rộng so với Sharding
Cấu hình phân tán OrientDB được đặt thành bản sao đầy đủ. Có nhiều nút với cùng một bản sao cơ sở dữ liệu là rất quan trọng đối với việc đọc quy mô. Trên thực tế, mỗi máy chủ độc lập trong việc thực hiện các lần đọc và truy vấn. Nếu bạn có 10 nút máy chủ, thông lượng đọc là 10 lần.
Với ghi thì ngược lại: có nhiều nút với bản sao đầy đủ sẽ làm chậm các hoạt động, nếu bản sao là đồng bộ. Trong trường hợp này, việc chia nhỏ cơ sở dữ liệu trên nhiều nút cho phép bạn mở rộng quy mô ghi, vì chỉ một tập hợp con các nút tham gia vào quá trình ghi. Hơn nữa, bạn có thể có một cơ sở dữ liệu lớn hơn một nút máy chủ HD.
Mở rộng quy mô trên Viết
Nếu bạn có mạng chậm và bạn có bản sao đồng bộ (mặc định), bạn có thể phải trả giá cho độ trễ. Trên thực tế, khi OrientDB chạy đồng bộ, ít nhất nó sẽ đợiwriteQuorum. Điều này có nghĩa là nếu writeQuorum là 3 và bạn có 5 nút, thì nút máy chủ điều phối (nơi bắt đầu hoạt động phân tán) phải đợi câu trả lời từ ít nhất 3 nút để cung cấp câu trả lời cho máy khách.
Để duy trì tính nhất quán, writeQuorum nên được đặt thành phần lớn. Nếu bạn có 5 nút, phần lớn là 3. Với 4 nút, nó vẫn là 3. Đặt writeQuorum thành 3 thay vì 4 hoặc 5 cho phép giảm chi phí độ trễ và vẫn duy trì tính nhất quán.
Sao chép không đồng bộ
Để tăng tốc mọi thứ, bạn có thể thiết lập Sao chép không đồng bộ để loại bỏ nút cổ chai về độ trễ. Trong trường hợp này, nút máy chủ điều phối thực thi hoạt động cục bộ và đưa ra câu trả lời cho máy khách. Toàn bộ bản sao sẽ ở trong nền. Trong trường hợp không đạt đến số đại biểu, các thay đổi sẽ được khôi phục một cách minh bạch.
Mở rộng quy mô trên Đọc
Nếu bạn đã đặt writeQuorum thành phần lớn các nút, bạn có thể để readQuorumthành 1 (mặc định). Điều này tăng tốc tất cả các lần đọc.