Bilgisayar, ne sayar?

AbaküsTürkçe çevrisinin ingilizcesinden daha güzel olduğunu düşündüğüm nadir kelimelerden biridir bilgisayar. Zira ingilizcesi compute kelimesinde türemiş olan kelimenin manası hesaplamaktır. Bilgisayarı hesap makinesi ile aynı seviyede tutan bir kelimedir. Halbuki bilgisayar bilgi ve sayar kelimelerinin birleşmesi ile oluşur ki, bilgisayar hakikaten bilgi saymaktadır. Peki bu sayacağı bilgileri nerede saklamaktadır?

İşte yazımızın konusu burada başlıyor.

Bütün veri depolama mantığını burda anlatmak gibi bir şansım yok. Aslında böyle bir amacımda yok. MySQL indexlerle alakalı yazıma temek oluşturması açısından yazma gereği duydum bu yazıyı ve MySQL index merkezli yazacağım.

Veri depolama konusu ele alındığında 3 ana maddeyi ele alabiliriz.

  1. Sabit Disk ( Kalıcı Veri Depolama )
  2. Bellek ( RAM )  ( Geçici Data Depolama )
  3. Veri Sayfaları ( Mantıksal Veri Sunma )

Sabit Diskler ile ilgili yazımı şuradan okuyabilirsiniz.

Bellek dediğimiz icat en basit tanımlama ile geçici depolama birimidir. Bilgisayar açıldığı anda üzerine veri kaydedilmeye başlanır. Kapandığı anda ise üzerindeki tüm veri silinmiş olur. RAM ( Random Access Memory) olarak bilinen aygıt,  Volatile Data Storage ( Uçucu / Geçici Veri Depolama )  olarak tanımlanabilir.  Sabit diskten okunan tüm veri diskin tampon belleğinden ( buffer ) ram’e aktarılır ve buradan okunup işlem yapılır. Tam tersi harddisk’e veri kaydetmek için geçerlidir.

RAM ‘e veri yazma ve RAM ‘den veri okuma herhangi bir fiziksel hareket olmadığı için hızlı gerçekleşir ama diskten veri okuma için aynı şey geçerli değildir.

Disk üzerinde okunması gereken data parçalar halinde ise disk arama ( seeking ) yapmak durumunda kalır ve işlemi yavaşlatır, aksi durumda tek parça blok veri için tarama (  scan ) yapar. Bu işlem çok daha hızlı gerçekleşir. Bu noktada imdadımıza MySQL yetişir.  MySQL ‘in farklı veri depolama motorları için farklı formatları vardır.

MySQL sürekli dinamik olan datayı saklayıp okumak ile veriyi verimli bir şekilde saklamak arasında sürekli bir savaş verir.  Yeni bir data eklendiğinde datayı datapage’de uygun olan araya koymak sureti ile diğer kayıtları kaydırır. Aradan bir kayıt silindiğinde ise tam tersini yapmaya çalışır ama çok hızlı gerçekleşen data akışlarında bir süre sonra parçalanmış bir data page oluşur ve böylece ulaşılması zor bir veri ile karşı karşıya kalırız.

Bu noktada MySQL OPTIMIZE TABLE komutu kurtarıcı olacaktır.  OPTIMIZE TABLE işletim sistemlerindeki disk birleştirmenin ( defragmant ) mikro boyutudur.

Ayrıca MySQL ‘in dataları yönetmek için kullandığı header’lar mevcuttur. Kayıt sayfaları başındaki bu header’lar data hakkında detaylı bilgi saklar. Bu bilgiler içerisinde datanın boyutu, kaç kayıt saklandığı ve başka bir yazımızın konusu olacak indexler gibi bir çok konuda bilgi saklar.

Sonuç olarak datanın derli toplu olması yani kolay ulaşılabilir olması data akışını ve direk olarak program hızımızı etkileyen en temel faktördür. Sevgiye şevkate açtır, ilgisiz kalmaktan hazzetmez.

Bilgi akış şemasının en kaba anlatımı budur. 

One thought on “Bilgisayar, ne sayar?

Bir Cevap Yazın

Your email will not be published. Name and Email fields are required.

Şu HTML etiketlerini ve özelliklerini kullanabilirsiniz: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>