Bu sayfa makine çevirisidir. İngilizce orijinalini okuyun. English

IBSurgeon kütüphanesi

FirebirdSQL: dahili dosyalar, geçici dosyalar ve ortam değişkenleri

by Vasily Sidorov, 2 Eylül 2022, IBSurgeon

Deneyimli Firebird DBA’ları, Firebird’ün dahili ve geçici dosyaları depolamak için oldukça büyük miktarda disk alanı gerektirebileceğini bilirler. Üretim sisteminde geçici dosyalar için önerilen disk alanı boyutu 30-40 GB’dir, ancak yüksek yüklü sistemler için bu daha fazla olabilir.

Bu makalede, Firebird dahili ve geçici dosyalarının türlerini açıklayacağız ve ayrıca bunların yapılandırma parametreleri ve işletim sistemi ortam değişkenleri aracılığıyla nasıl saklandığını ve yönetildiğini ele alacağız. Makale, Firebird’ün kurulumu ve yapılandırılması konusuna ayrılmış makale ve materyal serisine devam etmektedir.

Firebird çekirdek geliştiricilerinden önemli not:

FIREBIRD_LOCK ortam değişkenini asla, asla, ASLA ayarlamayın/değiştirmeyin - ne yaptığınızı ÇOK İYİ bilmiyorsanız.

IBSurgeon ekibinden açık öneri:

FIREBIRD_LOCK’u değiştirmeyin.

Diğer geçici dosyalar için - buna bakın.

Firebird’de Dahili Dosyalar

Dahili dosyalar, Firebird’ün dahili işlemlerini gerçekleştirmek için kullandığı dosyalardır. Bu dosyalar kullanıcılar veya üçüncü taraf yazılımlar tarafından değiştirilmemeli veya dokunulmamalıdır. Aşağıdaki bilgiler yalnızca referans amaçlıdır.

Dahili dosyaların genel adlandırma deseni

Firebird dahili kullanımda fbNN_ önekini kullanır, burada NN şunlar olabilir:

  • Ana ODS (Disk Üzerindeki Yapı) numarası (Firebird 3.0 için ODS 12, Firebird 4.0 için ODS 13), yani dosya fb13 ile başlar.
  • NN kısaltılmış sürüm numarası olabilir - örneğin, dosya fb50 ile başlayabilir.

Ayrıca, geçici dosyalar için de kullanılan fb_ öneki olabilir.

Firebird’deki dahili dosya türleri

Firebird’de aşağıdaki ana dahili dosya türleri vardır:

  1. fb_lock_ kilit dosyaları - Firebird kilit yöneticisi tarafından kullanılan dosyalar
  2. fbNN_monitor_ izleme tablolarının verilerini içeren dosyalar
  3. fbNN_trace_ izleme oturumları için veri içeren dosyalar
  4. fb_event_ olayların saklanan tamponlarını içeren dosya
  5. fb_user_mapping kullanıcı eşleme verilerini içeren dosyalar
  6. izleme oturumları için dahili verileri içeren dosyalar
  7. bayrak dosyaları (sıfır boyutlu)
  8. fb_repl_ çoğaltma dosyaları

Firebird dahili dosyalarını ayrıntılı olarak inceleyelim.

Kilit dosyaları

Kilit dosyaları fb_lock_ önekine sahiptir. Firebird’ün kilit yöneticisi tarafından, Firebird veritabanı içindeki nesnelere ve Firebird örnek(ler)i arasındaki erişimi senkronize etmek için kullanılır.

Kilit dosyaları, bir veritabanı dosyası açıldığında oluşturulur ve kapatıldığında silinir.

Varsayılan olarak, son bağlantı kesildiğinde veritabanı dosyası kapatılır. Firebird 3.0’dan itibaren, LINGER seçeneğini kullanarak son bağlantının kesilmesinden sonra Firebird’de bir veritabanı dosyasını açık tutmak mümkündür.

Kilit dosyasının başlangıç boyutu firebird.conf dosyasındaki LockMemSize parametresiyle ayarlanır. Çalışma boyutu mimariye göre değişir: SuperServer, kilit dosyalarını Classic ve SuperClassic’ten daha az yoğun kullanır. Tipik kilit tablosu boyutu yaklaşık 30-50MB’dir, ancak Classic/SuperClassic’te binlerce bağlantısı olan sunucular için kilit dosyalarının boyutu 2GB’a kadar büyüyebilir. 2GB, vanilla Firebird’deki kilit dosyaları için uygulama sınırıdır.

İzleme tablolarından veri içeren dosyalar

Firebird, 2.1 sürümünden itibaren izleme tablolarına sahiptir. Bu tablolar veritabanının içinde saklanmaz, izleme verileri istek üzerine toplanır ve fbNN_monitor_ ad desenine sahip dahili dosyalarda tutulur.

İzleme tablosu verilerini içeren dosyaların boyutu, bağlantı sayısına ve bunların etkinliğine (işlemler, ifadeler, saklı prosedürler vb.) bağlıdır. Ayrıca, fb_NN_monitor_ dosyalarının sayısı ve boyutu, farklı bağlantılardan izleme tablolarına yapılan istek sayısına bağlıdır (MON$ tablolarını izleme dışı görevler için kullanmamanızın nedenlerinden biri de budur).

İzleme oturumları için veri içeren dosyalar

fbNN_trace_ dosya adı deseni, etkin izleme oturumu dosyasına olan bağlantıyı tutar. fb_trace_ ad desenine sahip dosyalar, izleme oturumu hakkında bilgi içerir. Bu, izleme verileri için bir tür tampondur. fb_trace dosyasının maksimum boyutu firebird.conf dosyasındaki MaxUserTraceLogSize parametresiyle sınırlıdır. Bu tampon aşırı doldurulursa, izleme otomatik olarak askıya alınır.

Olay tamponları için dosya

fb_event_ ad desenine sahip dosyalar, Firebird’ün istemci uygulamalarına teslim edilmemiş olayları sakladığı tamponlardır.

Kullanıcı eşleme verilerini içeren dosyalar

fb_user_mapping dosyaları, Firebird örneklerinde kullanıcı eşlemelerini önbelleğe almak için kullanılır.

Bayrak dosyaları

POSIX’te Firebird, sıfır boyutlu bayrak dosyalarını kullanır - fb_guard, fb_init, fb_port_NUMBER. Bu dosyalar Firebird’ün başlatılmasında kullanılır.

Çoğaltma dosyaları

Firebird 4 ve HQbird’de fb_repl_ dosyaları, çoğaltma süreçleri için dahili verileri içerir.

Dahili dosyaların konumu

Varsayılan olarak, tüm Firebird dahili dosyaları aynı klasörde saklanır: Windows’ta C:\ProgramData\firebird, Linux’ta /tmp/firebird. Lütfen klasörün yeterli izinlere sahip olması gerektiğini unutmayın, böylece Firebird örneği orada dosyalar oluşturabilir ve bunlarla çalışabilir!

FIREBIRD_LOCK ortam değişkenini tanımlayarak dahili Firebird dosyalarının bulunduğu klasörün konumunu değiştirmek mümkündür, ancak bunu önermiyoruz.

LÜTFEN DİKKAT: veritabanı bozulmasını önlemek için, aynı veritabanı dosyasını açan tüm Firebird süreçleri aynı FIREBIRD_LOCK ile çalışmalıdır. Lütfen bu değişkeni oluşturmayın ve varsayılan konumları kullanın.

Dahili dosyaların boyutu

Pratikte, dahili Firebird dosyalarının toplam boyutu yaklaşık 100-200MB’dir ve bilinen maksimum 2GB’a kadar çıkabilir.

Firebird’de Geçici Dosyalar

Geçici dosyalar, Firebird motoru tarafından kullanıcı işlemlerinin bir sonucu olarak ortaya çıkan geçici verileri saklamak için oluşturulur - örneğin DISTINCT içeren sorgular. Geçici dosyalar, yüksek yüklü üretim sistemlerinde çok büyük olabilir, bu nedenle deneyimli bir DBA’nın geçici dosya türlerini tanıyabilmesi ve gerekirse Firebird yapılandırmasını ayarlayabilmesi veya geçici dosyaları saklamak için disk alanı tahsis edebilmesi gerekir.

Firebird’de geçici dosyaların konumu

Firebird, geçici dosyaları FIREBIRD_TMP, TEMP, TMP ortam değişkenleri tarafından belirtilen klasörde (bu sırayla) oluşturur. Bu tür değişkenler yoksa, geçici dosyalar Windows’ta C:\Temp veya Linux’ta /tmp içinde oluşturulur.

Pratikte, Windows’ta Firebird geçici dosyalarını C:\Windows\Temp (TEMP ortam değişkenine karşılık gelir), Linux’ta /tmp içinde görebiliriz.

Firebird’deki geçici dosya türleri

Aşağıdaki geçici dosyalar vardır (tümü fb_ önekini kullanır):

  1. fb_table_ tablo nesneleri, geçici tablolar dahil ancak bunlarla sınırlı değil
  2. fb_blob_ bloblar ve otonom işlemler
  3. fb_undo_ geri alma verileri
  4. fb_recbuf_ aktif sorgularda, sanal tablolarda vb. ara verileri tutmak için kullanılır
  5. fb_merge_ hash birleştirmeleri için veriler
  6. fb_sort_ sıralamalar (DISTINCT/ORDER BY/GROUP BY içeren sorgular ve dizin oluşturma/yeniden oluşturma için)
  7. fb_tpc_ fb_tpc_ verileri - v4’ten itibaren, ilişkili commit numaralarıyla bilinen tüm işlemlerin listesi
  8. fb_snap_ verileri - v4’ten itibaren, tüm aktif veritabanı anlık görüntülerinin listesi

Geçici dosyaların konumu nasıl değiştirilir?

Firebird 4’ten önceki sürümler için, 4-8 arası türlerdeki geçici dosyaları saklamak üzere belirli bir klasörü Firebird yapılandırma parametresi TempDirectories ile tanımlamak mümkündür.

Firebird 4 ve üzeri için, yeni conf parametresi TempTableDirectory, 1-3 arası türlerdeki geçici tabloları saklamak üzere klasörü belirtmenize olanak tanır. firebird.conf ve databases.conf dosyalarında ayarlanabilir.

Firebird için Ortam Değişkenleri

Firebird aşağıdaki işletim sistemi ortam değişkenlerini kullanabilir (tanımlanmışlarsa):

  • FIREBIRD Firebird yapılandırma dosyalarını içeren klasör
  • FIREBIRD_LOCK dahili dosyaları içeren klasör
  • FIREBIRD_MSG mesaj dosyasını içeren klasör (firebird.msg)
  • FIREBIRD_TMP geçici dosyalar için klasör

Pratikte, FIREBIRD_TMP, geçici dosyaları belirli bir varsayılan olmayan konumda saklamak için büyük bir nedeniniz varsa tanımlamanın mantıklı olduğu tek değişkendir.

Lütfen FIREBIRD_TMP içindeki yolun geçersiz olması durumunda (mevcut değil veya yeterli izin yok), bunun Firebird’ün çalışmasını engelleyen kritik hatalara yol açacağını unutmayın.

Firebird çekirdek geliştiricilerinden önemli not:

FIREBIRD_LOCK ortam değişkenini asla, asla, ASLA ayarlamayın/değiştirmeyin - ne yaptığınızı ÇOK İYİ bilmiyorsanız.

IBSurgeon ekibinden açık öneri:

FIREBIRD_LOCK’u asla değiştirmeyin. Bu bilgiler yalnızca referans amaçlıdır.

Diğer geçici dosyalar için - buna bakın.

Özet yerine: çok sık sorulan sorunun cevabı

Birçok DBA soruyor - Firebird dahili ve/veya geçici dosyalarını saklamak için RAM sürücü veya tmpfs kullanmalı mıyız?

Kısa cevap: Hayır, Firebird yapılandırmasını ayarlamak daha iyidir. Çok fazla belleğiniz varsa, DefaultDBCachePages değerini (yalnızca SuperServer için) artırabilir ve TempCacheLimit’i yükseltebilirsiniz (3+ sürümlerinde Firebird, TempCacheLimit’in 2GB’dan fazla kullanılmasına izin verir).

Hangi değerlerin kullanılması gerektiğinden emin değilseniz, belirli donanım/VM parametreleri için en uygun ve güvenli yapılandırmaları oluşturan Firebird Configuration Calculator aracını kullanın.

Daha uzun cevap: Firebird, geçici ve dahili dosyaların büyük bir kısmını bellekte tutacak şekilde tasarlanmıştır, ancak pratikte geçici nesnelerin çok büyüdüğü durumlar olduğundan, bunları diskte saklama mekanizmasına da sahiptir. Firebird, mümkün ve makul olduğunda geçici ve dahili dosyaları bellekte önbelleğe almak için işletim sistemi mekanizmalarını (mmap, dosya sistemi önbelleği, geçici dosyalar vb.) etkin bir şekilde kullanır. Firebird’ün ayarlanması önce Firebird yapılandırması üzerinden, ardından işletim sistemi üzerinden (geçici dosyaların konumunu ayarlama, dosya önbelleği ayarlama için çeşitli seçenekler vb.) yapılmalıdır.

İlgili bağlantılar

Videolar:

Bellek kullanımı ayarlama hakkında sunum

Herhangi bir sorunuz varsa veya geri bildirim göndermek isterseniz lütfen [email protected] adresine yazmaktan çekinmeyin.