The Falcon Storage Engine (Mysql'de Perfomansın Yeni Adı)

Mysql 6.0.4 ile Gelen FALCON Depolama Motoru,

FALCON depoloma motoru (table engine) : modern veritabanı gereksinimlerinde ,
yüksek hacimli Web hizmet uygulamalarında veya yüksek performans gerektiren
ortamlarda kullanılmak üzere tasarlanmıştır.

FALCON 32 bit ve 64 bit Windows sistemlerde, Linux üstünde,
Mac OS X, PowerPC ve Solaris / Linux SPARC platformlarında Çalışmaktadır.
Gelecek Mysql sürümlerinde de FALCON ek platformlarda hizmet
vermeyi düşünmektedir. 2 ,4,8 Çekirdekli sistemlerde ve 32 bit
sistemlerde de kullanılabilmektedir.

Büyük bellek mimarisinde ve Çok Çekirdekli işlemcilerde, büyük performans
göstermektedir. En Çok 64 bit platformlarda FALCON gücünü gösterebilmektedir.
Multi Version Concurrency Control (MVCC) ve satır düzeyinde lock özelliklerine
sahiptir. (fully ACID-compliant) tamamen ACID standartlarına uygun ve
eşzamanlı işlemler yapabilmektedir.

Seri bir şekilde veri girişi desteklemekte , aynı zamanda yüksek performans
ve veri kurtarma özelliklerinden ödün vermemektedir. B-Tree indexleme yapısına
sahiptir. Sıkıştırılmış bir formatta veriyi diskte saklar.

FALCON ile tüm veriler TABLE SPACE ler iÇinde tutulur. Oracle daki gibi.
Tablespace: Mantıksal yapıları bir arada tutan ve gruplayan veritabanı depolama ünitesidir.

FALCON ile 3 table space default olarak oluşur.

1- Adsız olan bu table space sistem tabloları tutmak iÇin kullanılır.
2- falcon_user, kullanıcı iÇin varsayılan konum olarak tanımlanan tablolarda kullanılır.
3- GeÇici tablo tutmak iÇin kullanılan falcon_temporary.

Kendimiz de table space yaratabiliriz.

CREATE TABLESPACE buyuk_tablom
    ADD DATAFILE 'file_name'
    ENGINE [=] Falcon

şeklinde syntax’a sahiptir.

FALCON table;

CREATE TABLE deneme (
    id    INT,
    adi VARCHAR (20),
    soyadi VARCHAR (20)
) ENGINE=Falcon


şeklinde kullanıma sahiptir.

Table Space ile birlikte tablo yaratma;

CREATE TABLE deneme  (
   id INT,
   adi VARCHAR (20),
   soyadi VARCHAR (20))
TABLESPACE buyuk_tablom
ENGINE=Falcon;


İstersek tablolarımız dahil olduğu table space leri değiştirebiliriz.

ALTER TABLE deneme TABLESPACE kucuk_tablom



Table space leri silmek iÇin ise,

DROP TABLESPACE buyuk_tablom ENGINE=Falcon;

Son olarak da FALCON da maximum tek tabloda 4,29 milyar satır data tutabilirsiniz.

Üzetle FALCON yüksek performans iÇin yaratılmıştır:)

www.mysqlsupport.net bilinmeyenleri anlatmaya devam ediyor……
Bir sonraki makalelerde görüşmek dileğiyle,

Tayfur BÖLER
Database Administrator

Mysql 6.0.6 ile gelen Maria Depolama Motoru

Mysql 6.0.6 ile gelen Maria Depolama Motoru,

Bu yazımda size Mysql 6.0.6 versiyonu ile gelen MARIA depolama motoru
hakkında bilgi vermek istiyorum. Maria Table engine’i Myisam’ın
daha güvenli versiyonudur. Myisam ile temel işlevsellik olarak
tam uyumludur fakat Çökme durumunda kurtarma desteği mevcuttur.
Maria, Myisamın esneklik kazanmış versiyonudur diyebiliriz.

Eşzamanlı insert ve selectlere yanıt verebilmektedir.

CREATE TABLE maria_deneme_table (id int) ENGINE = Maria;

şeklinde kullanımı vardır.

Veri ,Maria tablolarda üÇ dosyayla depolanır:

* table.frm – Standart MySQL FRM tablonun tanımını iÇeren bir dosya.
* table.MAD – Maria veri dosyası.
* table.MAI – Maria dizin dosyası.

Maria tablolarda log tutma olayıda:

???????? maria_log :? işareti olan günün tarihidir. Marianın günlük log tutma
dosyasıdır. Bu dosyanın max. boyutunu maria_log_file_size değişkeni ile
ayarlayabilirsiniz.

maria_log_control: Bu log dosyasıyla da Maria motorunun mevcut durumu
hakkında bilgi sahibi olabilirsiniz.

MyISAM yalnızca eşzamanlı INSERT ve SELECT leri destekler.
Maria ise eşzamanlı INSERT, UPDATE ve SELECT işlemini destekler.
Maria’nın full_text_search index desteği mevcuttur.

Kısacası Maria; İnnodb’nin sağlamlığından ve Myisamın hızından nasibini alan
gayet iyi bir table engine dir.

Bir sonraki makalelerde görüşmek dileğiyle,

Tayfur BÖLER
Database Administrator

INNODB TABLE

Innodb Tablo Yapısı,

Innodb Pratik Bilgiler:


1-Mysql’in en Çok kullanılan tablo enginelerinden biridir.
2-%100 Acid uyumludur.
3-Transaction yapıya sahiptir. Commit/Rollback
işlemlerini desteklemektedir. Yani değişiklik gören datayı
geri getirme gibi.
4-Row (satır) seviyesinde lock (kilitleme) özelliğine sahiptir.
5-İndexleri ve verileri cache’lemek iÇin kendi tampon havuzu vardır.
(innodb_buffer_pool_size)
6-Sanal cilt yapısını kullanılır.
7-Tabloları birden fazla disk veya dosyalarda tutabilir.
8-Full-text Search index desteği yoktur.
9-Myisam’a göre performans bakımından daha düşüktür ama
Myisam’a göre daha sağlamdır.
10-64 TB(tera byte) depolama üst sınırı vardır.
11-B-tree index yapısını kullanır. Hash index kullanmaz.
12-Compressed data (sıkıştırılmış veri) desteği vardır.
13-Encrypted data (şifrelenmiş data) desteği vardır.
14-Replication desteği mevcuttur.
15-Foreing Key desteği mevcuttur.
16-Innodb girilen dataları keylere göre saklamaktadır.Myisam
ise girildiği sıra ile saklar.

Bir sonraki makalelerde görüşmek dileğiyle,

Tayfur BÖLER
Database Administrator

Mysql MEMORY TABLE (HEAP TABLE)

Mysql MEMORY TABLE (HEAP TABLE),

Mermory tablo (Heap) da datalar hafıza da yani ram de tutulur. Buda bize
data erişiminde büyük bir hız sağlar. Fakat bilgiler ram de tutulduğu iÇin
mysql server’ın restart olması durumunda verileri kaybederiz. Bunun iÇin
memory table kullanırken bu duruma da göz önünde bulundarmanız gerekir.

Syntax:

CREATE TABLE personel
(id INT,
adi varchar(20),
soyadi varchar(20) ,
INDEX USING BTREE (id))
ENGINE = MEMORY;

Yukarıdaki kodu Çalıştırdığımız da id,adı ve soyadi kolonlarına sahip indexleme metedolojisi
olarak BTREE yapısını kullanan ve engine’i MEMORY olan personel tablomuzu oluşturmuş olduk.

şimdi bu tablo üzerinde normal tabloymuş gibi bütün işlemleri yapabilirsiniz.
İnsert ,update,delete ,indexleme vs.Ama unutmayınki datalarınız ram de duruyor yani
herhangi bir restart durumunda bilgileriniz silinecektir.

Indexleme metedolojisi olarak HASH ve BTREE yapılarını kullanır.Ama size tavsiyem
performans aÇısında BTREE yapısını kullanmanızdır.

Bellekte oluşan en büyük tabloların boyutu max_heap_table_size sistem değişkenin
default boyutu olan 16 mb ile sınırlıdır. Bu değeri arttırabilirsiniz.

tmp_table_size ve max_heap_table_size değişkenlerinin değerlerini tablonun boyutuna göre ve
tablonun ileride alacağı boyutu göz önünde bulundurarak iyi belirlemek gerekir.Bir nevi bu değişkenlere verdiğimiz değerle MEMORY tabloya üst sınır koymuş oluyoruz.

Diğer makaleler de görüşmek dileğiyle,

Tayfur BÖLER
Database Administrator

Mysql MERGE Table 2 (Tabloları Birleştirme)

Mysql MERGE Table 2,

MERGE TABLO yapısının avantajları:

*Ürneğin ayrı tablolar halinde farklı aydan verileri koyabilirsiniz ve daha sonra merge tabloyu
kullanarak daha pratik ve hızlı raporlar oluşturabilirsiniz.

*Daha etkili bir arama gerÇekleştirebilirsiniz. Eğer tam olarak ne aradığınızı biliyorsanız,
sadece tek bir sorgu iÇin bölünmüş tablolarla teker teker uğraşmayıp tek bir tabloyla işi bitirebilirsiniz.

*Daha etkili bir onarım gerÇekleştirin. Tek büyük bir tabloyu onarmak yerine MERGE kullanmak
iÇin parÇalanmış tabloları onarmak daha kolay ve hızlıdır.

*Üok hızlı indexler oluşturabilirsiniz.MERGE tabloda full text search oluşturamazsınız ama tabiki parÇalanmış tablolarda oluşturabilirsiniz.

MERGE TABLO yapısının dezavantajları:

*Bir MERGE tabloda sadece aynı Myisam Tablolarını kullanabilirsiniz.

*MERGE tabloda full text search oluşturamazsınız ama tabiki parÇalanmış tablolarda oluşturabilirsiniz.

Diğer makaleler de görüşmek dileğiyle,

Tayfur BÖLER
Database Administrator

Mysql MERGE Table 1 (Tabloları Birleştirme)

Mysql MERGE Table,

Myisam tabloları birleştirmek iÇin kullanılır.Yani birden fazla myisam tabloyu ,aynı kolon ismi,
aynı kolon sayılarına sahip olması şartıyla,tek tabloymuş gibi kullanmanızı sağlar. Burada önemli olan kısım tablolardaki kolon isimlerinin ve kolon sayılarının eşit olması ve tabloların engine’ninin
Myisam olması.

şimdi bir örnekle anlatmayaya Çalışayım.

Satis_2009_01 isminde bir tablomuz olsun bu tabloda 2009 ocak ayı satışları mevcut.

CREATE TABLE satis_2009_01 (
id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
urun CHAR(20) ,
fiyat BIGINT(20),
alici CHAR(20))
ENGINE=MyISAM;

Satis_2009_02 isminde bir tablomuz olsun bu tabloda 2009 şubat ayı satışları mevcut.

CREATE TABLE satis_2009_02 (
id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
urun CHAR(20) ,
fiyat BIGINT(20),
alici CHAR(20))
ENGINE=MyISAM;

Sonra oluşturduğumuz bu tablolara kayıtlar girelim.

INSERT INTO satis_2009_01 (urun,fiyat,alici) values
(‘ekran kartı’,40,’tayfur’),
(‘ses kartı’,60,’ahmet pazarlama’);

INSERT INTO satis_2009_02 (urun,fiyat,alici) values
(‘tv kartı’,80,’emrah’),
(‘ram’,60,’ismail’);

Ve bu tablolarda da oldukÇa fazla kayıt olduğunu düşünün.şimdi bir MERGE tablo yaratarak
bu iki tabloyu tek tabloymuş gibi kullanabileceğiz.Yukarıda oluşturduğumuz her iki tabloda da
insert,update ve delete olması durumunda da oluşturduğumuz MERGE tablo otomatik olarak
güncellenecektir.

CREATE TABLE satisToplam (
id INT NOT NULL AUTO_INCREMENT,
urun CHAR(20),
fiyat BIGINT(20),
alici CHAR(20),
INDEX(id))
ENGINE=MERGE UNION=(satis_2009_01,satis_2009_02)
INSERT_METHOD=LAST;

MERGE tablomuzu oluşturduktan sonra da select yapıp satisToplam tablosunun iÇine bakalım.

select * from satisToplam;

id,urun,fiyat,alici
1,ekran kartı,40,tayfur
2,ses kartı,60,ahmet pazarlama
1,tv kartı,80,emrah
2,ram,60,ismail

Gördüğünüz gibi her iki tablodaki kayıtlar satisToplam tablosunda mevcut.
İsterseniz satis_2009_01 ve satis_2009_02 tablolarında delete veya update işlemi
yapıp satisToplam tablosunu kontrol edebilirsiniz.Göreceksiniz ki değişiklikler anında bu
tabloya yansımış.

Diğer makaleler de görüşmek dileğiyle,

Tayfur BÖLER
Database Administrator