OrientDB - Performans Ayarlama
Bu bölümde, OrientDB kullanan uygulamanızı nasıl optimize edeceğiniz konusunda bazı genel ipuçları edinebilirsiniz. Farklı veritabanı türleri için performansı artırmanın üç yolu vardır.
Document Database Performance Tuning - Her yeni belge için belge oluşturmayı engellemeye yardımcı olan bir teknik kullanır.
Object Database Performance Tuning - Performansı artırmak için genel teknikleri kullanır.
Distributed Configuration Tuning - Dağıtık konfigürasyonda performansı artırmak için farklı metodolojiler kullanır.
Bellek, JVM ve Uzak bağlantı ayarlarını değiştirerek genel performans ayarı elde edebilirsiniz.
Hafıza Ayarları
Bellek ayarında performansı artırmak için farklı stratejiler vardır.
Sunucu ve Gömülü Ayarlar
Bu ayarlar hem Sunucu bileşeni hem de Java uygulamasının OrientDB'yi Gömülü modda doğrudan kullanarak çalıştırıldığı JVM için geçerlidir. plocal.
Ayarlamadaki en önemli şey, bellek ayarlarının doğru olmasını sağlamaktır. Gerçek bir fark yaratabilecek şey, yığın ile Bellek Haritalama tarafından kullanılan sanal bellek arasında, özellikle de bellek içi önbellek yapılarının ham GÇ'den daha az sayıldığı büyük veri kümelerinde (GB'ler, TB'ler ve daha fazlası) doğru dengelemedir.
Örneğin, Java işlemine maksimum 8 GB atayabiliyorsanız, genellikle küçük yığın ve büyük disk önbelleği (yığın dışı bellek) atamak daha iyidir.
Yığın belleğini artırmak için aşağıdaki komutu deneyin.
java -Xmx800m -Dstorage.diskCache.bufferSize=7200 ...
storage.diskCache.bufferSize ayar (eski "yerel" depolamayla file.mmap.maxMemory) MB cinsindendir ve Disk Önbelleği bileşeni için ne kadar bellek kullanılacağını belirtir. Varsayılan olarak 4 GB'dir.
NOTE - Maksimum yığın ve disk önbelleği tamponunun toplamı çok yüksekse, işletim sisteminin büyük bir yavaşlamayla değişmesine neden olabilir.
JVM Ayarları
JVM ayarları server.sh (ve server.bat) toplu iş dosyalarında kodlanmıştır. JVM'yi kullanımınıza ve hw / sw ayarlarınıza göre ayarlamak için bunları değiştirebilirsiniz. Server.bat dosyasına aşağıdaki satırı ekleyin.
-server -XX:+PerfDisableSharedMem
Bu ayar, JVM hakkında hata ayıklama bilgilerinin yazılmasını devre dışı bırakır. JVM'nin profilini çıkarmanız gerekirse, bu ayarı kaldırmanız yeterlidir.
Uzaktan Bağlantılar
Veritabanına uzak bağlantı kullanarak eriştiğinizde performansı artırmanın birçok yolu vardır.
Getirme Stratejisi
Uzak bir veritabanıyla çalışırken, kullanılan getirme stratejisine dikkat etmeniz gerekir. Varsayılan olarak, OrientDB istemcisi yalnızca sonuç kümesinde bulunan kaydı yükler. Örneğin, bir sorgu 100 öğe döndürürse, ancak bu öğeleri istemciden geçerseniz, OrientDB istemcisi öğeleri, her bir cevapsız kayıt için sunucuya bir ağ çağrısıyla birlikte tembel bir şekilde yükler.
Ağ Bağlantı Havuzu
Her istemci, varsayılan olarak, sunucuyla konuşmak için yalnızca bir ağ bağlantısı kullanır. Aynı istemcideki birden çok iş parçacığı aynı ağ bağlantı havuzunu paylaşır.
Birden fazla iş parçacığına sahip olduğunuzda, ücretsiz bir ağ bağlantısını beklemek için çok zaman harcandığından bir darboğaz olabilir. Ağ bağlantı havuzunu yapılandırmanın önemli olmasının nedeni budur.
Yapılandırma çok basittir, sadece 2 parametre -
minPool- Bağlantı havuzunun başlangıç boyutudur. Varsayılan değer, "client.channel.minPool" genel parametreleri olarak yapılandırılır.
maxPool- Bağlantı havuzunun ulaşabileceği maksimum boyuttur. Varsayılan değer, "client.channel.maxPool" genel parametreleri olarak yapılandırılır.
Tüm havuz bağlantıları meşgulse, istemci iş parçacığı ilk ücretsiz bağlantıyı bekleyecektir.
Veritabanı özelliklerini kullanarak yapılandırma için örnek komut.
database = new ODatabaseDocumentTx("remote:localhost/demo");
database.setProperty("minPool", 2);
database.setProperty("maxPool", 5);
database.open("admin", "admin");
Dağıtılmış Yapılandırma Ayarı
Dağıtılmış yapılandırmada performansı artırmanın birçok yolu vardır.
İşlemleri Kullan
Grafikleri güncelleseniz bile, her zaman işlemlerde çalışmalısınız. OrientDB, bunların dışında çalışmanıza izin verir. Yaygın durumlar, salt okunur sorgulardır veya büyük ve eşzamanlı olmayan işlemler, başarısızlık durumunda geri yüklenebilir. Dağıtılmış yapılandırmada çalıştırdığınızda, işlemleri kullanmak gecikmeyi azaltmaya yardımcı olur. Bunun nedeni, dağıtılmış işlemin yalnızca tamamlama zamanında gerçekleşmesidir. Tek bir büyük işlemi dağıtmak, gecikme nedeniyle küçük birden çok işlemi aktarmaktan çok daha verimlidir.
Çoğaltma ve Parçalama
OrientDB dağıtılmış yapılandırması tam çoğaltmaya ayarlanmıştır. Aynı veritabanı kopyasına sahip birden fazla düğüme sahip olmak, ölçek okumaları için önemlidir. Aslında, her sunucu okuma ve sorgu yürütme konusunda bağımsızdır. 10 sunucu düğümünüz varsa, okuma verimi 10x'tir.
Yazma işlemlerinde durum tam tersidir: Tam çoğaltmaya sahip birden çok düğüme sahip olmak, çoğaltma eşzamanlıysa işlemleri yavaşlatır. Bu durumda, veritabanını birden çok düğüm arasında parçalamak, yazma işlemlerini büyütmenize olanak tanır, çünkü yazma sırasında yalnızca bir düğüm alt kümesi yer alır. Ayrıca, bir sunucu düğümünden daha büyük bir veritabanına sahip olabilirsiniz.
Yazmalara göre ölçeklendirin
Yavaş bir ağınız varsa ve eşzamanlı (varsayılan) bir çoğaltmanız varsa, gecikme bedelini ödeyebilirsiniz. Aslında OrientDB eşzamanlı olarak çalıştığında, en azındanwriteQuorum. Bu, writeQuorum 3 ise ve 5 düğümünüz varsa, koordinatör sunucu düğümünün (dağıtılmış işlemin başladığı yer) istemciye yanıt vermesi için en az 3 düğümden yanıt beklemesi gerektiği anlamına gelir.
Tutarlılığı korumak için, writeQuorum çoğunluğa ayarlanmalıdır. 5 düğümünüz varsa çoğunluk 3'tür. 4 düğümle hala 3'tür. WriteQuorum'u 4 veya 5 yerine 3 olarak ayarlamak, gecikme maliyetini düşürmeye ve yine de tutarlılığı korumaya izin verir.
Eşzamansız Çoğaltma
İşleri hızlandırmak için, gecikme darboğazını ortadan kaldırmak için Eşzamansız Çoğaltma kurabilirsiniz. Bu durumda, koordinatör sunucu düğümü işlemi yerel olarak yürütür ve yanıtı istemciye verir. Çoğaltmanın tamamı arka planda olacaktır. Yeterli sayıya ulaşılmaması durumunda değişiklikler şeffaf bir şekilde geri alınacaktır.
Okuma sayısını artırın
WriteQuorum'u düğümlerin çoğuna zaten ayarladıysanız, readQuorum1'e (varsayılan). Bu, tüm okumaları hızlandırır.