Bu yüzden dün bir MySQL sunucusunu optimize etmek için yardım isteyen bir PM aldım ve cevabımın ne olacağını herkesle paylaşabileceğimi düşündüm.
Her şeyden önce MySQL'in (en azından 5.6) veya MariaDB'nin (10.3 veya daha yeni) yeni bir sürümünü kullandığınızdan emin olun çünkü bunlar genellikle eski sürümlerden daha iyi performans göstermelidir.
MySQL'inizi yükseltmek kolaydır - sadece mevcut sürümü kaldırın (yani: pkg delete mysql55-server) ve yenisini kurun (pkg install mysql57-server). Şu anda yüklü olan sürümü pkg bilgisi ile bulabilirsiniz. İstemciyi ayrı olarak kaldırmanız ve yüklemeniz de gerekebilir.
MySQL'i kaldırdığınızda, verilerinizin silinmediğini ve bu nedenle çok farklı bir sürüme geçmediğiniz sürece yükseltilmiş sunucunuzu hemen başlatabilmeniz gerektiğini unutmayın - bu durumda mysql_upgrade'i daha yeni sürümler üzerinden çalıştırmanız gerekebilir. MySQL ve MariaDB bunu kendileri yapacak. Her şeye rağmen, önce bir yedekleme yapmak iyi bir fikirdir: ya fiziksel bir kopya (yani, dosyaları / var / db / mysql içindeki dosyaları başka bir yere kopyalayın, ancak tablo bozulmasını önlemek için önce mysql hizmetini durdurun!) - hala desteklenen sürümü, bir sorun olması durumunda tekrar kurabiliriz - veya yoksa mysqldump ile yedekleme.
Kendi my.cnf dosyanızı uzun süredir kullanıyorsanız, yeni bir sürüm yüklemek onu yeni varsayılanlarla değiştirmeyecektir, bu da mysql'nin başlamasını önleyecek eski ayarları burada kullanıyor olabileceğiniz anlamına gelir - sadece MySQL günlüğünüzü kontrol edin /var/db/mysql/<yourhostname>.err hizmeti başlattıktan sonra her şeyin yolunda olduğundan emin olmak için.
Artık yeni bir sürümü çalıştırdığımıza göre, optimizasyona doğru bir şekilde geçelim. Kendinize neyi optimize edeceğinizi nasıl bulacağınızı açıklamayacağım - Veritabanı Yönetimi dereceleri bunun için. Size sadece bazı yararlı araçlara işaret edeceğim. İlk olarak, InnoDB'ye olabildiğince çok tabloyu taşımanız önerilir. Navicat kullanıyorsanız ve kullanmasanız bile, bu çok önemsiz bir görevdir.
MySQL için ZFS ayarı
İyi miktarda InnoDB tablonuz varsa ve ZFS dosya sistemini kullanıyorsanız (örneğin OVH, varsayılan olarak ZFS'yi yükler) InnoDB tablolarının blok boyutuyla eşleşmeleri için belirli dosya sistemleri kurmak isteyebilirsiniz. Dikkat, bu prosedür yeni başlayanlar için tavsiye edilmez:
İlk olarak, bu ayarları [mysqld] bölümünün altındaki my.cnf'ye ekleyin (bu ayarlar zaten mevcutsa, uygun şekilde değiştirin)
innodb_data_home_dir = /var/db/mysql-innodb
innodb_log_group_home_dir = /var/db/mysql-innodb-logs
Çalışıyorsa mysql-server hizmetini durdurun ve ardından mysql dizininizi taşıyın:
mv / var / db / mysql / var / db / mysql-bak
Daha sonra kabukta InnoDB için özel dosya sistemlerimizi oluşturmak için şu komutları yürütün:
zfs create -o recordsize=16k -o primarycache=metadata zroot/var/db/mysql-innodb
zfs create -o recordsize=128k -o primarycache=metadata zroot/var/db/mysql-innodb-logs
zfs create -o recordsize=8k zroot/var/db/mysql
Şimdi aşağıdaki dosyaları uygun konumlarına kopyalayalım (bunların hepsine sahip olmayabilirsiniz - sorun değil, o zaman atlayın)
cp /var/db/mysql-bak/ib_logfile* /var/db/mysql-innodb-logs/
cp /var/db/mysql-bak/ib_buffer_pool /var/db/mysql-innodb/
cp /var/db/mysql-bak/ibdata* /var/db/mysql-innodb/
cp /var/db/mysql-bak/ibtmp* /var/db/mysql-innodb/
cp -r /var/db/mysql-bak/* /var/db/mysql/
Şimdi mysql sunucusunu başlatın ve hata olmadığından emin olmak için günlükleri kontrol edin; sonra / var / db / mysql-bak klasörünü silebileceğinizden emin olduğunuzda.
Tuning araçları
Her şey sırayla. MySQL ile ilgili tüm araçlar için ana bilgisayar, kullanıcı ve şifre belirlemenin en kolay yolu, /root/.my.cnf adlı bir dosya oluşturmak ve diğer kullanıcıların şifremizi okuyamaması için ona chmod 600 vermektir.
[client]
user=root
password=whatever
port=3306
socket=/tmp/mysql.sock
Bu şekilde, aynı seçenekleri defalarca belirtmeye gerek kalmadan otomatik olarak oturum açacağız.
MySQLTuner
MySQLTuner, mysql sunucunuzun performansını artırmak için size uygulanabilir öneriler sunan popüler bir perl betiğidir. Şahsen ben Percona Toolkit'i tercih ederim, ancak çıktıyı okumak çok kolay olduğu için bu yeni başlayanlar için iyi bir başlangıç noktasıdır.
cd /root
fetch
perl mysqltuner.pl
MySQL sunucumuzun kullanıcı ve şifresini girdikten sonra, bir dizi istatistik ve öneride bulunacaktır.
Daha fazla bilgi ve komut satırı seçenekleri için:
Percona Araç Seti
Percona Sunucusu, aslında, tıpkı MariaDB gibi, MySQL'in yerini alan bir düşüştür. Şahsen ben test etmedim çünkü FreeBSD desteği yarım yamalak görünüyor. Yine de, yardımcı araç paketi "percona-toolkit" için bir bağlantı noktası bulabiliriz, bu da MySQLTuner'dan daha kapsamlı öneriler sunar.
Bazıları linux komutlarına güvendiği ve hiç kimse bunları FreeBSD'ye uyarlamayı umursamadığı için (desteğin yarım yamalak olduğunu söylemiştim!), Setteki tüm araçlar çalışmıyor, ancak en kullanışlı olanlardan bazıları:
pt-duplicate-key-checker MySQL tablolarında yinelenen dizinleri ve yabancı anahtarları bulun.
pt-index-usage Günlükten sorguları okuyun ve dizinleri nasıl kullandıklarını
analiz edin pt-query-Digest MySQL sorgularını günlüklerden, işlem listesinden veya tcpdump'dan analiz edin
pt-table-usage Sorguların tabloları nasıl kullandığını analiz edin.
pt-variable-advisor MySQL değişkenlerini analiz edin ve olası problemler hakkında tavsiyede bulunun (MySQLTuner önerilerine benzer)
Yeni başlayanlar için en kullanışlı bulduğum iki araçla birlikte Percona Toolkit'in kullanım örnekleri. Dizin kullanımı yavaş bir sorgu günlüğünü okur ve kaldırılması gereken dizinleri önerirken, değişken danışmanı MySQLTuner'a benzer öneriler gösterir:
pt-index-usage -F /root/.my.cnf /var/db/mysql/slow.log
pt-variable-advisor "S=/tmp/mysql.sock"
Şimdilik bu kadar. Otomatikleştirilmiş araçları çalıştırmak için mucizeler beklemeyin - bu araçlar donanımınızın özelliklerini, hedeflerinizi ve ihtiyaçlarınızı veya makinede başka bir yazılım çalıştırıp çalıştırmadığınızı bilmiyor. Bunların hepsi önemli hususlardır - örneğin Metin sunucunuz aynı makinedeyse MySQL'e tüm belleği vermek iyi bir fikir değildir. Bunları, neyin değiştirilebileceğini ve sahip olduğu etkiyi anlamanıza yardımcı olması için kullanın ve önerileri körü körüne uygulamayın. Ve MySQL'deki bazı ayarları hatırlayın
Performans sorunlarınız varsa ve bunları çözemiyorsanız, varsayılan bir my.cnf kullanmayı veya yaptığınız tüm optimizasyonları silmeyi deneyin - bazen varsayılanlara geri dönmek en iyi seçenektir.
MaviAyGames | Mysql Performansı İçin Optimize
Metin2 sunucularında yüksek performans elde etmek isteyen geliştiriciler için veritabanı optimizasyonu hayati öneme sahiptir. Özellikle Metin2Lobby gibi gelişmiş platformlar üzerinde çalışan projelerde, doğru yapılandırılmış bir MySQL veya MariaDB yapısı, sunucu stabilitesini ve oyuncu deneyimini doğrudan etkiler. Bu makalede, MaviAyGames tarafından önerilen ve Metin2 veritabanları için optimize edilmiş MySQL ayarlarını ve performans artırıcı teknikleri ele alacağız.
MySQL Ayarlarının Optimize Edilmesi
Metin2 veritabanı işlemlerinde en çok dikkat edilmesi gereken alanlardan birisi, veritabanının sorgularda ne kadar hızlı yanıt verdiğidir. Bu bağlamda, MySQL yapılandırma dosyası olan 'my.cnf' dosyasında yapılması gereken bazı değişiklikler vardır:
innodb_buffer_pool_size: InnoDB motoru kullanıyorsanız, RAM’in büyük bir kısmını bu alana tahsis etmelisiniz. Örneğin 8GB RAM’li bir sistemde bu değeri 5-6GB olarak ayarlamak mantıklıdır.
query_cache_size: Sorguların önbelleğe alınmasını sağlar. Ancak MySQL 8.0 ve sonrası sürümlerde bu özellik kaldırıldığı için dikkatli olunmalıdır.
max_connections: Metin2 sunucularında eş zamanlı oyuncu sayısına göre bu değerin ayarlanması gerekir. Çok fazla bağlantı açık bırakmak sistem kaynaklarını tüketebilir.
Metin2 Tablolarının İyileştirilmesi
Metin2 veritabanında bulunan ana tablolar (player, item, mob, guild, account) üzerinde yapılacak indeksleme ve sorgu iyileştirmeleri performansı ciddi anlamda artıracaktır. Özellikle player tablosunda name ve account_id alanlarına indeks atılması, giriş ve veri çekme işlemleri sırasında ciddi hız farkı yaratır.
Benzer şekilde, item tablosunda owner_id ve vnum alanları için indeks oluşturmak, envanter işlemleri sırasında veritabanı yükünü azaltacaktır.
Stored Procedure ve Trigger Kullanımı
Metin2 özel sunucularında karmaşık veri manipülasyonları için stored procedure ve trigger kullanımı avantaj sağlar. Örneğin, bir oyuncu seviye atladığında otomatik olarak log tutan bir trigger yazabilirsiniz. Bu tür otomasyonlar hem veri bütünlüğünü korur hem de sunucu tarafında tekrarlayan görevleri azaltır.
Veri Güvenliği ve Yedekleme
Her Metin2 sunucusu sahibi, veritabanı yedeklemelerini ihmal etmemelidir. mysqldump komutu ile düzenli yedekler almak, veri kaybı durumlarında kurtarıcı rol oynar. Ayrıca, Metin2 özel sunucularında SQL Injection gibi saldırılara karşı filtreleme uygulanmalıdır.
Metin2 DB Core ve Geliştirme Araçları
MaviAyGames, Metin2 veritabanı yönetimi için özel geliştirilen araçlar ve modüller sunmaktadır. Bu tür araçlar sayesinde, item_proto, mob_proto, skill_table gibi sistem dosyaları daha verimli yönetilebilir. Ayrıca, Metin2 geliştiricileri için optimize edilmiş sorgular ve tablo yapıları da bu araçlar aracılığıyla kolayca uygulanabilir.
Sonuç olarak, Metin2 sunucularında MySQL performansı, doğru yapılandırma ve düzenli bakım ile ciddi şekilde artırılabilir. Hem oyuncu deneyimi hem de sunucu kararlılığı açısından bu konuya önem vermek gereklidir.
MaviAyGames | Optimizing for MySQL Performance
Database optimization is crucial for developers aiming to achieve high performance on Metin2 servers. Especially for projects operating on advanced platforms like Metin2Lobby, a correctly configured MySQL or MariaDB structure directly affects server stability and player experience. In this article, we will discuss optimized MySQL settings and performance-enhancing techniques recommended by MaviAyGames for Metin2 databases.
Optimizing MySQL Settings
One of the most critical aspects in Metin2 database operations is how quickly the database responds to queries. In this context, certain changes should be made in the MySQL configuration file 'my.cnf':
innodb_buffer_pool_size: If you are using the InnoDB engine, allocate a large portion of your RAM to this area. For instance, setting this value to 5-6GB on an 8GB RAM system would be reasonable.
query_cache_size: Enables caching of queries. However, note that this feature has been removed in MySQL 8.0 and later versions.
max_connections: This value must be adjusted according to the number of concurrent players on your Metin2 server. Too many open connections can consume system resources.
Improving Metin2 Tables
Indexing and query improvements on main tables (player, item, mob, guild, account) in the Metin2 database significantly enhance performance. For instance, adding indexes to the name and account_id fields in the player table creates a significant speed difference during login and data retrieval processes.
Similarly, creating indexes on owner_id and vnum fields in the item table reduces database load during inventory operations.
Using Stored Procedures and Triggers
For complex data manipulations in private Metin2 servers, using stored procedures and triggers provides advantages. For example, you can write a trigger that automatically logs whenever a player levels up. Such automations preserve data integrity and reduce repetitive tasks on the server side.
Data Security and Backups
Every Metin2 server owner must not neglect database backups. Regular backups taken with the mysqldump command play a rescuing role in case of data loss. Additionally, filtering against attacks like SQL Injection should be implemented for private Metin2 servers.
Metin2 DB Core and Development Tools
MaviAyGames offers specialized tools and modules for managing Metin2 databases. Thanks to these tools, system files such as item_proto, mob_proto, and skill_table can be managed more efficiently. Moreover, optimized queries and table structures tailored for Metin2 developers can easily be applied through these tools.
In conclusion, MySQL performance on Metin2 servers can be significantly enhanced through correct configuration and regular maintenance. It is essential to pay attention to this topic for both player experience and server stability.
Her şeyden önce MySQL'in (en azından 5.6) veya MariaDB'nin (10.3 veya daha yeni) yeni bir sürümünü kullandığınızdan emin olun çünkü bunlar genellikle eski sürümlerden daha iyi performans göstermelidir.
MySQL'inizi yükseltmek kolaydır - sadece mevcut sürümü kaldırın (yani: pkg delete mysql55-server) ve yenisini kurun (pkg install mysql57-server). Şu anda yüklü olan sürümü pkg bilgisi ile bulabilirsiniz. İstemciyi ayrı olarak kaldırmanız ve yüklemeniz de gerekebilir.
MySQL'i kaldırdığınızda, verilerinizin silinmediğini ve bu nedenle çok farklı bir sürüme geçmediğiniz sürece yükseltilmiş sunucunuzu hemen başlatabilmeniz gerektiğini unutmayın - bu durumda mysql_upgrade'i daha yeni sürümler üzerinden çalıştırmanız gerekebilir. MySQL ve MariaDB bunu kendileri yapacak. Her şeye rağmen, önce bir yedekleme yapmak iyi bir fikirdir: ya fiziksel bir kopya (yani, dosyaları / var / db / mysql içindeki dosyaları başka bir yere kopyalayın, ancak tablo bozulmasını önlemek için önce mysql hizmetini durdurun!) - hala desteklenen sürümü, bir sorun olması durumunda tekrar kurabiliriz - veya yoksa mysqldump ile yedekleme.
Kendi my.cnf dosyanızı uzun süredir kullanıyorsanız, yeni bir sürüm yüklemek onu yeni varsayılanlarla değiştirmeyecektir, bu da mysql'nin başlamasını önleyecek eski ayarları burada kullanıyor olabileceğiniz anlamına gelir - sadece MySQL günlüğünüzü kontrol edin /var/db/mysql/<yourhostname>.err hizmeti başlattıktan sonra her şeyin yolunda olduğundan emin olmak için.
Artık yeni bir sürümü çalıştırdığımıza göre, optimizasyona doğru bir şekilde geçelim. Kendinize neyi optimize edeceğinizi nasıl bulacağınızı açıklamayacağım - Veritabanı Yönetimi dereceleri bunun için. Size sadece bazı yararlı araçlara işaret edeceğim. İlk olarak, InnoDB'ye olabildiğince çok tabloyu taşımanız önerilir. Navicat kullanıyorsanız ve kullanmasanız bile, bu çok önemsiz bir görevdir.
MySQL için ZFS ayarı
İyi miktarda InnoDB tablonuz varsa ve ZFS dosya sistemini kullanıyorsanız (örneğin OVH, varsayılan olarak ZFS'yi yükler) InnoDB tablolarının blok boyutuyla eşleşmeleri için belirli dosya sistemleri kurmak isteyebilirsiniz. Dikkat, bu prosedür yeni başlayanlar için tavsiye edilmez:
İlk olarak, bu ayarları [mysqld] bölümünün altındaki my.cnf'ye ekleyin (bu ayarlar zaten mevcutsa, uygun şekilde değiştirin)
innodb_data_home_dir = /var/db/mysql-innodb
innodb_log_group_home_dir = /var/db/mysql-innodb-logs
Çalışıyorsa mysql-server hizmetini durdurun ve ardından mysql dizininizi taşıyın:
mv / var / db / mysql / var / db / mysql-bak
Daha sonra kabukta InnoDB için özel dosya sistemlerimizi oluşturmak için şu komutları yürütün:
zfs create -o recordsize=16k -o primarycache=metadata zroot/var/db/mysql-innodb
zfs create -o recordsize=128k -o primarycache=metadata zroot/var/db/mysql-innodb-logs
zfs create -o recordsize=8k zroot/var/db/mysql
Şimdi aşağıdaki dosyaları uygun konumlarına kopyalayalım (bunların hepsine sahip olmayabilirsiniz - sorun değil, o zaman atlayın)
cp /var/db/mysql-bak/ib_logfile* /var/db/mysql-innodb-logs/
cp /var/db/mysql-bak/ib_buffer_pool /var/db/mysql-innodb/
cp /var/db/mysql-bak/ibdata* /var/db/mysql-innodb/
cp /var/db/mysql-bak/ibtmp* /var/db/mysql-innodb/
cp -r /var/db/mysql-bak/* /var/db/mysql/
Şimdi mysql sunucusunu başlatın ve hata olmadığından emin olmak için günlükleri kontrol edin; sonra / var / db / mysql-bak klasörünü silebileceğinizden emin olduğunuzda.
Tuning araçları
Her şey sırayla. MySQL ile ilgili tüm araçlar için ana bilgisayar, kullanıcı ve şifre belirlemenin en kolay yolu, /root/.my.cnf adlı bir dosya oluşturmak ve diğer kullanıcıların şifremizi okuyamaması için ona chmod 600 vermektir.
[client]
user=root
password=whatever
port=3306
socket=/tmp/mysql.sock
Bu şekilde, aynı seçenekleri defalarca belirtmeye gerek kalmadan otomatik olarak oturum açacağız.
MySQLTuner
MySQLTuner, mysql sunucunuzun performansını artırmak için size uygulanabilir öneriler sunan popüler bir perl betiğidir. Şahsen ben Percona Toolkit'i tercih ederim, ancak çıktıyı okumak çok kolay olduğu için bu yeni başlayanlar için iyi bir başlangıç noktasıdır.
cd /root
fetch
Ziyaretçiler için gizlenmiş link,görmek için üye olmalısınız!
Giriş yap veya üye ol.
perl mysqltuner.pl
MySQL sunucumuzun kullanıcı ve şifresini girdikten sonra, bir dizi istatistik ve öneride bulunacaktır.
Daha fazla bilgi ve komut satırı seçenekleri için:
Ziyaretçiler için gizlenmiş link,görmek için üye olmalısınız!
Giriş yap veya üye ol.
Percona Araç Seti
Percona Sunucusu, aslında, tıpkı MariaDB gibi, MySQL'in yerini alan bir düşüştür. Şahsen ben test etmedim çünkü FreeBSD desteği yarım yamalak görünüyor. Yine de, yardımcı araç paketi "percona-toolkit" için bir bağlantı noktası bulabiliriz, bu da MySQLTuner'dan daha kapsamlı öneriler sunar.
Bazıları linux komutlarına güvendiği ve hiç kimse bunları FreeBSD'ye uyarlamayı umursamadığı için (desteğin yarım yamalak olduğunu söylemiştim!), Setteki tüm araçlar çalışmıyor, ancak en kullanışlı olanlardan bazıları:
pt-duplicate-key-checker MySQL tablolarında yinelenen dizinleri ve yabancı anahtarları bulun.
pt-index-usage Günlükten sorguları okuyun ve dizinleri nasıl kullandıklarını
analiz edin pt-query-Digest MySQL sorgularını günlüklerden, işlem listesinden veya tcpdump'dan analiz edin
pt-table-usage Sorguların tabloları nasıl kullandığını analiz edin.
pt-variable-advisor MySQL değişkenlerini analiz edin ve olası problemler hakkında tavsiyede bulunun (MySQLTuner önerilerine benzer)
Yeni başlayanlar için en kullanışlı bulduğum iki araçla birlikte Percona Toolkit'in kullanım örnekleri. Dizin kullanımı yavaş bir sorgu günlüğünü okur ve kaldırılması gereken dizinleri önerirken, değişken danışmanı MySQLTuner'a benzer öneriler gösterir:
pt-index-usage -F /root/.my.cnf /var/db/mysql/slow.log
pt-variable-advisor "S=/tmp/mysql.sock"
Şimdilik bu kadar. Otomatikleştirilmiş araçları çalıştırmak için mucizeler beklemeyin - bu araçlar donanımınızın özelliklerini, hedeflerinizi ve ihtiyaçlarınızı veya makinede başka bir yazılım çalıştırıp çalıştırmadığınızı bilmiyor. Bunların hepsi önemli hususlardır - örneğin Metin sunucunuz aynı makinedeyse MySQL'e tüm belleği vermek iyi bir fikir değildir. Bunları, neyin değiştirilebileceğini ve sahip olduğu etkiyi anlamanıza yardımcı olması için kullanın ve önerileri körü körüne uygulamayın. Ve MySQL'deki bazı ayarları hatırlayın
Performans sorunlarınız varsa ve bunları çözemiyorsanız, varsayılan bir my.cnf kullanmayı veya yaptığınız tüm optimizasyonları silmeyi deneyin - bazen varsayılanlara geri dönmek en iyi seçenektir.
MaviAyGames | Mysql Performansı İçin Optimize
Metin2 sunucularında yüksek performans elde etmek isteyen geliştiriciler için veritabanı optimizasyonu hayati öneme sahiptir. Özellikle Metin2Lobby gibi gelişmiş platformlar üzerinde çalışan projelerde, doğru yapılandırılmış bir MySQL veya MariaDB yapısı, sunucu stabilitesini ve oyuncu deneyimini doğrudan etkiler. Bu makalede, MaviAyGames tarafından önerilen ve Metin2 veritabanları için optimize edilmiş MySQL ayarlarını ve performans artırıcı teknikleri ele alacağız.
MySQL Ayarlarının Optimize Edilmesi
Metin2 veritabanı işlemlerinde en çok dikkat edilmesi gereken alanlardan birisi, veritabanının sorgularda ne kadar hızlı yanıt verdiğidir. Bu bağlamda, MySQL yapılandırma dosyası olan 'my.cnf' dosyasında yapılması gereken bazı değişiklikler vardır:
innodb_buffer_pool_size: InnoDB motoru kullanıyorsanız, RAM’in büyük bir kısmını bu alana tahsis etmelisiniz. Örneğin 8GB RAM’li bir sistemde bu değeri 5-6GB olarak ayarlamak mantıklıdır.
query_cache_size: Sorguların önbelleğe alınmasını sağlar. Ancak MySQL 8.0 ve sonrası sürümlerde bu özellik kaldırıldığı için dikkatli olunmalıdır.
max_connections: Metin2 sunucularında eş zamanlı oyuncu sayısına göre bu değerin ayarlanması gerekir. Çok fazla bağlantı açık bırakmak sistem kaynaklarını tüketebilir.
Metin2 Tablolarının İyileştirilmesi
Metin2 veritabanında bulunan ana tablolar (player, item, mob, guild, account) üzerinde yapılacak indeksleme ve sorgu iyileştirmeleri performansı ciddi anlamda artıracaktır. Özellikle player tablosunda name ve account_id alanlarına indeks atılması, giriş ve veri çekme işlemleri sırasında ciddi hız farkı yaratır.
Benzer şekilde, item tablosunda owner_id ve vnum alanları için indeks oluşturmak, envanter işlemleri sırasında veritabanı yükünü azaltacaktır.
Stored Procedure ve Trigger Kullanımı
Metin2 özel sunucularında karmaşık veri manipülasyonları için stored procedure ve trigger kullanımı avantaj sağlar. Örneğin, bir oyuncu seviye atladığında otomatik olarak log tutan bir trigger yazabilirsiniz. Bu tür otomasyonlar hem veri bütünlüğünü korur hem de sunucu tarafında tekrarlayan görevleri azaltır.
Veri Güvenliği ve Yedekleme
Her Metin2 sunucusu sahibi, veritabanı yedeklemelerini ihmal etmemelidir. mysqldump komutu ile düzenli yedekler almak, veri kaybı durumlarında kurtarıcı rol oynar. Ayrıca, Metin2 özel sunucularında SQL Injection gibi saldırılara karşı filtreleme uygulanmalıdır.
Metin2 DB Core ve Geliştirme Araçları
MaviAyGames, Metin2 veritabanı yönetimi için özel geliştirilen araçlar ve modüller sunmaktadır. Bu tür araçlar sayesinde, item_proto, mob_proto, skill_table gibi sistem dosyaları daha verimli yönetilebilir. Ayrıca, Metin2 geliştiricileri için optimize edilmiş sorgular ve tablo yapıları da bu araçlar aracılığıyla kolayca uygulanabilir.
Sonuç olarak, Metin2 sunucularında MySQL performansı, doğru yapılandırma ve düzenli bakım ile ciddi şekilde artırılabilir. Hem oyuncu deneyimi hem de sunucu kararlılığı açısından bu konuya önem vermek gereklidir.
MaviAyGames | Optimizing for MySQL Performance
Database optimization is crucial for developers aiming to achieve high performance on Metin2 servers. Especially for projects operating on advanced platforms like Metin2Lobby, a correctly configured MySQL or MariaDB structure directly affects server stability and player experience. In this article, we will discuss optimized MySQL settings and performance-enhancing techniques recommended by MaviAyGames for Metin2 databases.
Optimizing MySQL Settings
One of the most critical aspects in Metin2 database operations is how quickly the database responds to queries. In this context, certain changes should be made in the MySQL configuration file 'my.cnf':
innodb_buffer_pool_size: If you are using the InnoDB engine, allocate a large portion of your RAM to this area. For instance, setting this value to 5-6GB on an 8GB RAM system would be reasonable.
query_cache_size: Enables caching of queries. However, note that this feature has been removed in MySQL 8.0 and later versions.
max_connections: This value must be adjusted according to the number of concurrent players on your Metin2 server. Too many open connections can consume system resources.
Improving Metin2 Tables
Indexing and query improvements on main tables (player, item, mob, guild, account) in the Metin2 database significantly enhance performance. For instance, adding indexes to the name and account_id fields in the player table creates a significant speed difference during login and data retrieval processes.
Similarly, creating indexes on owner_id and vnum fields in the item table reduces database load during inventory operations.
Using Stored Procedures and Triggers
For complex data manipulations in private Metin2 servers, using stored procedures and triggers provides advantages. For example, you can write a trigger that automatically logs whenever a player levels up. Such automations preserve data integrity and reduce repetitive tasks on the server side.
Data Security and Backups
Every Metin2 server owner must not neglect database backups. Regular backups taken with the mysqldump command play a rescuing role in case of data loss. Additionally, filtering against attacks like SQL Injection should be implemented for private Metin2 servers.
Metin2 DB Core and Development Tools
MaviAyGames offers specialized tools and modules for managing Metin2 databases. Thanks to these tools, system files such as item_proto, mob_proto, and skill_table can be managed more efficiently. Moreover, optimized queries and table structures tailored for Metin2 developers can easily be applied through these tools.
In conclusion, MySQL performance on Metin2 servers can be significantly enhanced through correct configuration and regular maintenance. It is essential to pay attention to this topic for both player experience and server stability.
