Aramaları Hızlandırmak İçin log Tablosuna Dizinler Ekle

  • Konbuyu başlatan Konbuyu başlatan Admin
  • Başlangıç tarihi Başlangıç tarihi
  • Cevaplar Cevaplar 0
  • Görüntüleme Görüntüleme 67

Admin

Metin2Lobby
Yönetici
Founder
Katılım
6 Mayıs 2022
Mesajlar
52,647
Ticaret : 1 / 0 / 0
Merhaba arkadaşlar.
Tabloda aradığınız herhangi bir şeye daha kolay ulaşmanızı sağlayacaktır.

Konsol'u aç ve şu komutları okut;
Kod:
ALTER TABLE `log` ADD INDEX `who_index` (`who`) USING BTREE , ADD INDEX `time_index` (`time`) USING BTREE , ADD INDEX `how_index` (`how`) USING HASH , ADD INDEX `vnum_index` (`vnum`) USING BTREE ;

İyi forumlar.
Aramaları Hızlandırmak İçin log Tablosuna Dizinler Ekle

Metin2 sunucularında performans optimizasyonu yaparken log tablosu genellikle göz ardı edilir. Ancak özellikle oyun sunucularında, kullanıcı hareketlerinin, envanter değişikliklerinin ve sistem kayıtlarının tutulduğu log tabloları zamanla oldukça büyüyebilir. Bu nedenle log tablosundaki veriler üzerinde yapılan aramalar, doğru indeksleme yapılmazsa ciddi performans sorunlarına yol açabilir.

Log Tablosunun Yapısı

Metin2 sunucularında log tablosu genellikle şu şekilde yapılandırılır:

- id: Kayıt numarası
- type: Log tipi (örneğin item_usage, login, logout)
- who: Olayı gerçekleştiren kişi (oyuncu adı veya char_id)
- what: Gerçekleşen işlem (örneğin item alımı)
- how: İşlem detayı (örneğin item ID, miktar)
- time: Olayın gerçekleştiği zaman

Bu tablo üzerinden belirli bir oyuncuya ait logları görüntülemek, belirli bir zaman dilimindeki işlemleri listelemek veya belirli bir işlem tipini filtrelemek gibi işlemler sıkça yapılır.

Dizin (Index) Nedir?

Bir veritabanı tablosunda sorguların hızlı çalışması için kullanılan yapıdır. Dizin, tablodaki belirli sütunlara göre verileri sıralanmış şekilde tutarak arama işlemlerini hızlandırır. Ancak her sütuna dizi̇n eklendiğinde yazma işlemi (INSERT, UPDATE) yavaşlayabilir. Bu yüzden dikkatli kullanılmalıdır.

Hangi Sütunlara Dizin Eklenmeli?

En çok kullanılan sorguları analiz ederek dizin eklenecek sütunlar belirlenmelidir. Genel olarak Metin2 log tablosunda şu sütunlara dizi̇n eklemek mantıklıdır:

- who: Belirli bir oyuncuya ait logları çekerken kullanılır.
- time: Belirli bir zaman aralığındaki logları getirmek için önemlidir.
- type: Belirli log tiplerini filtrelemek için gereklidir.

Örnek Dizin Komutları

Aşağıda MySQL/MariaDB için örnek dizi̇n oluşturma komutları verilmiştir:

Kod:
[B]CREATE INDEX idx_who ON log(who);[/B][BR][/BR][B]CREATE INDEX idx_time ON log(time);[/B][BR][/BR][B]CREATE INDEX idx_type ON log(type);[/B]


Unutmayın ki çok fazla dizi̇n aynı anda performansı düşürebilir. Bu yüzden sadece gerçekten sorgulanacak sütunlara dizi̇n ekleyin.

Bileşik Dizin Kullanımı

Bazı durumlarda iki ya da daha fazla sütunun birlikte kullanılması gerekebilir. Örneğin bir oyuncunun belirli bir zamanda yaptığı belirli işlemi bulmak için aşağıdaki gibi bileşik bir dizi̇n kullanılabilir:

Kod:
[B]CREATE INDEX idx_who_time_type ON log(who, time, type);[/B]


Performans Testi

Dizi̇n ekledikten sonra sorgularınızı EXPLAIN komutuyla test edin. Eğer 'Using index' veya 'Using where' gibi ifadeler görüyorsanız dizi̇n doğru çalışıyordur.

Sonuç

Metin2 log tablosuna doğru dizi̇nler eklemek, sorgu süresini ciddi anlamda azaltabilir. Özellikle büyük sunucularda log tablosu milyonlarca kayıt içerebildiği için dizi̇n yönetimi kritik öneme sahiptir.


Adding Indexes to log Table for Faster Searches

In performance optimization for Metin2 servers, the log table is often overlooked. However, in game servers, log tables that store user movements, inventory changes, and system records can grow significantly over time. Therefore, searches on data within the log table can cause serious performance issues if proper indexing is not implemented.

Structure of the Log Table

The log table in Metin2 servers is generally structured as follows:

- id: Record number
- type: Log type (e.g., item_usage, login, logout)
- who: The person performing the action (player name or char_id)
- what: The performed action (e.g., item acquisition)
- how: Action details (e.g., item ID, quantity)
- time: Time of the event

Queries such as retrieving logs for a specific player, listing actions within a certain time range, or filtering by specific action types are frequently executed on this table.

What Is an Index?

An index is a structure used in database tables to speed up query execution. It stores data sorted according to specific columns, accelerating search operations. However, adding indexes to every column may slow down write operations (INSERT, UPDATE). Thus, they must be used carefully.

Which Columns Should Have Indexes?

Indexes should be added based on analyzing the most commonly used queries. Generally, the following columns in the Metin2 log table make sense to have indexes:

- who: Used when retrieving logs for a specific player.
- time: Important for fetching logs within a specific time frame.
- type: Required for filtering specific log types.

Example Index Commands

Below are example index creation commands for MySQL/MariaDB:

Kod:
[B]CREATE INDEX idx_who ON log(who);[/B][BR][/BR][B]CREATE INDEX idx_time ON log(time);[/B][BR][/BR][B]CREATE INDEX idx_type ON log(type);[/B]


Remember that too many indexes can reduce performance. Therefore, only add indexes to columns that are actually queried.

Composite Index Usage

In some cases, two or more columns might need to be used together. For example, to find a specific action made by a player at a particular time, you could use a composite index like this:

Kod:
[B]CREATE INDEX idx_who_time_type ON log(who, time, type);[/B]


Performance Testing

After adding indexes, test your queries with the EXPLAIN command. If you see phrases like 'Using index' or 'Using where', then the index is working correctly.

Conclusion

Adding correct indexes to the Metin2 log table can significantly reduce query times. Especially on large servers where the log table can contain millions of records, index management is critically important.
 

Şuan Bu Konuyu Görüntüleyen Kullanıcılar (Toplam : 0, Üye : 0, Misafir : 0)

Benzer konular

Geri
Üst Alt