avatar
Merhaba, Ziyaretçi! (Kayıt OlŞifremi Unuttum)



Mesaj Önizleme  Konuyu Gönder 
Sayfa (2): « İlk [1] 2 Sonraki > En Son »
MySQL Hakkında Temel Bilgiler
Yazar Mesaj
Gang$ta
bhdr.bilader.com
*****


Mesajlar: 1,007
Grup: Moderatör
Katılım: 2006
Statü: Çevrimdışı
Karma Puanı: 9
Mesaj: #1
MySQL Hakkında Temel Bilgiler

MySQL NEDİR?

* Bir (ilişkisel) veritabanı yönetim sistemidir.
* Tüm verileri tek bir ambara yığmak yerine farklı tablolarda ve veritabanlarında düzenli bir biçimde saklar.
* SQL adı verilen, veritabanlarına erişmek için kullanılan en yaygın ve standart dil ile işlemler yapıyor.
* Çifte lisanslı bir yazılımdır. Hem Genel Kamu Lisansı'na (GPL) sahip özgür bir yazılım, hem de GPL'in kısıtladığı alanlarda kullanmak isteyenler için ayrı bir lisansa sahiptir.
* MySQL AB isimli (eski ismi TCX) bir İsveç firması tarafından geliştiriliyor.
* MySQL'in son kararlı sürümü 4.1.7, yeni geliştirilen henüz alfa olan sürümü 5.0.2

MySQL AB NEDİR?

* MySQL AB, MySQL kurucuları ve ana geliştiricileri tarafından oluşturulan ve yürütülen bir ticari firma. 'AB', İsveç dilinde Ltd.Şti., Inc., GmbH gibi kısaltmalara karşılık gelen kelime.
* Firmanın ticari gelirinin önemli bir kısmı MySQL'i geliştirmeye harcanıyor.
* Tüm MySQL geliştiricileri, MySQL firmasının birer ücretli çalışanı. Birçok ülkede çalışanı olan bir kuruluş.
* MySQL yazılımı ilk baştan beri kendi kendini finanse ediyor, firma MySQL üzerine verdiği ticari hizmetlerden para kazanıyor. Bir ticari GPL yazılım geliştirme modeli örneği.

MySQL'İN GELİŞİMİ

* İlk başta mSQL ile tablolarına kendi hızlı yordamları (ISAM) ile bağlanmak için işe girişmişler.
* mSQL'in yeterince hızlı ve esnek olmadığı sonucuna varınca, mSQL ile aynı programlama arayüzüne (API) sahip yeni bir SQL arayüzü yazmışlar. mSQL API'sinin seçilmesinin nedeni piyasadaki kodların kolaylıkla kendi veritabanlarına aktarılabilmesi.
* "My"SQL isminin nereden geldiği tam olarak bilinmiyor. MySQL'den önce de ekip kendi yazdıkları araçlara "my" takısını ekliyordu. Öte yandan MySQL'in yaratıcısı Michael "Monty" Widenius'un kızının adı da My.
* MySQL'in sembolü olan yunusun adı 'Sakila'. İsim, dünya çapında yapılan 'Yunusa isim verin' yarışmasının sonucunda, gelen birçok önerinin arasından yazılımın geliştiricileri tarafından seçildi. Sakila, Afrika'da Swaziland'de konuşulan yerel dilden alınma bir kelime.


Neden MySQL?

* Çok hızlı, güvenilir ve kullanımı kolay.
* MySQL'e Python'dan Java'ya kadar birçok programlama dili ile erişilebilir.
* Apache ve PHP ile beraber web-veritabanı uygulamalarında çok yaygın olarak kullanılır. Apache-PHP-MySQL üçlüsü için hazırlanmış çok geniş bir yazılım yelpazesi bulunuyor.
* Özellikle internet ortamında önem kazanan, çok esnek ve güçlü bir kullanıcı erişim kısıtlama/yetkilendirme sistemine sahip.

MySQL'in Bazı Özellikleri

* Unix türevlerinden Amiga'ya kadar birçok farklı platformda çalışabiliyor.
* Birden fazla CPU ile kolaylıkla çalışabiliyor.
* 60000'in üzerinde tablo, 5 milyarın üzerinde satır ile çalıştığı söylenen MySQL sistemler bulunuyor.
* Transaction ve/ya atomik işlem kullanan çeşitli tablo tiplerini destekliyor.
* Tabloların kontrolü, optimizasyonu ve tamiri hızlı bir biçimde yapılabiliyor.
* Windows için ODBC desteği var, ODBC 2.5 komutları tamamen destekleniyor.
* Farklı karakter setlerini (iso8859-9, ...) ve onlara göre sıralama yapılmasını destekliyor, farklı dillerde hata mesajları verebiliyor.
* Özellikle internet ortamında önem kazanan, çok esnek ve güçlü bir kullanıcı erişim kısıtlama/yetkilendirme sistemine sahip.

MySQL'in Eksikleri

* Oracle SQL'de kullanılan SELECT ... INTO table ... komutunu desteklemiyor. Ancak Ansi SQL'de hemen hemen aynı işi gören INSERT INTO ... SELECT ... mevcut.
* Stored procedure / trigger desteği bulunmuyor.
* Kullanıcı kısıtlamak için kullanılan "view" özelliği yok. Ancak MySQL'in gelişmiş bir erişim kısıtlama sistemi olduğu için ihtiyaç duyulmuyor.

MySQL ve Diğer Veritabanı Sunucuları

* MySQL gelişimi sırasında, veritabanı sunucularının yılların birikimi "gelenek"lerinin önemli bir kısmını yok saymıştır. "Olmazsa olmaz" denilen birçok özelliğin, aslında birçok durumda önemli olmadığını ortaya koymuştur.
* MySQL çeşitli "pratik" çözümler için geliştirilirken, diğer veritabanı sunucuları akademik düzeyde belirli kurallar ve "veritabanı bilimi" ışığında geliştirilirler.
* Veritabanı uygulamalarının %80'inin, SQL özelliklerinin sadece %20'lik bir kısmına gerek duyduğu ilkesi çerçevesinde geliştirilir.
* MySQL size farklı tablo tipleri ve işleme türleri ile esneklik sağlar.
* Eğer teknik olarak 'basit' bir projeniz varsa, MySQL sizin için biçilmiş kaftan olabilir.
* Eğer teknik olarak 'karmaşık' bir projeniz varsa, geleneksel veritabanı sunucularında yer alan gelişmiş özelliklere ihtiyaç duyabilirsiniz.


!
06-04-2008 01:31
Kullanıcının websitesini ziyaret et Bu kullanıcının gönderdiği mesajları bul Bu mesajı bir cevapta alıntı yap
Gang$ta
bhdr.bilader.com
*****


Mesajlar: 1,007
Grup: Moderatör
Katılım: 2006
Statü: Çevrimdışı
Karma Puanı: 9
Mesaj: #2
RE: MySQL Hakkında Temel Bilgiler

Atomik İşlem / Transaction

* MySQL her iki tür işlemi de desteklediği için kullanıcı, uygulamasında atomik işlemlerin hızına mı transaction özelliklerine mi ihtiyacı olduğuna karar verebilir. Seçimler tablo bazında yapılabilir.
* Transaction'lı tablo ile atomik işlemle çalışan tablo arasındaki en büyük fark performans konusunda oluşur. Transactionlı tablolar çalışırken daha fazla bellek, daha fazla disk alanı ve daha fazla işlemci gücü harcar.
* Eğer uygulamalarınız kritik durumlarda COMMIT yapmaya değil de, ROLLBACK yapmaya göre yazıldıysa transaction kullanmak daha elverişli olabilir.
* Çoğunlukla kritik transactionla çalışan güncellemeler, atomik olarak çalışacak şekilde tekrar yazılabilir. Transactionların çözdüğü tüm bütünlük problemleri LOCK TABLES, INSERT DELAYED ve benzeri yöntemlerle çözülebilir.

MySQL Tablo Tipleri

InnoDB

* %100 ACID uyumlu, commit, rollback ve göçmeden kurtarma özelliklerine sahip bir tablo yapısını size sağlar.
* Satır seviyesinde kilitleme kullanır, Oracle-stili kilitleme olmaksızın SELECT işlemleri yapılmasını destekler.
* Yabancı anahtar kısıtlamalarına uyar.
* Veri ve indeksleri ana bellekte cache'lemek için kendi tampon havuzu vardır.
* Tabloları ve indeksleri tablo alanı olarak tanımladığı sanal ciltte tutar.
* Bir tablo alanı birçok dosya ya da disk bölümünden oluşabilir.
* InnoDB, MySQL'in standart transaction destekli tablo tipidir.

MySQL Tablo Tipleri

* MyISAM : MyISAM, MySQL'in "klasik" tablo tipidir. Çok hızlı, az kaynak harcayan ve verimli çalışmak için tasarlanmıştır.
* MERGE : Birden fazla eş MyISAM tablosunun tek bir tablo gibi kullanılması için kullanılır. Özellikle çok büyük tabloların daha hızlı tarama yapılabilmesi için küçük eş tablolara bölunmesi durumunda işe yararlar.
* HEAP : Hashlenmiş indeksler kullanırlar ve tüm veriler bellekte tutulur. Bu nedenle çok hızlı çalışırlar ama MySQL kapandığında tüm verileri kaybedersiniz. Geçici tablolar için çok yararlıdırlar.

Auto_increment

* Auto_increment özelliği, yeni satırlar için biricik bir değer oluşturmak için kullanılabilir.
* Yeni satır girilirken auto_increment kolonuna herhangi bir değer girilmediği takdirde, kolonda bulunan en yüksek değerin bir fazlası otomatik olarak atanacaktır.
* last_insert_id() SQL fonksiyonu ile, son girilen satıra otomatik olarak atanan değerin ne olduğu alınabilir.
* Bir tabloda sadece bir kolon auto_increment özelliğine sahip olabilir.

Indeksler

* İndeksler, belirli bir değeri olan satırları daha hızlı bulmak için kullanılırlar.
* İndeks olmazsa, MySQL birinci kayıttan başlayarak, ilgili kayıtları bulana kadar tablonun sonuna kadar gitmek zorunda kalır. Indeksler sayesinde rasgele tarama yapılabilir.
* İstenirse, kolonun tamamı değil sadece belirli bir kısmı da indekslenebilir.
* Text/Blob tipi alanların tamamı değil sadece bir kısmı indekslenebilir.
* Text/Blob alanların tamamını indekslemek için fulltext isimli özel bir indeks tipi kullanılabilir.
* Bir tabloda en fazla 32 kolonda indeks oluşturulabilir.
* Bir indeks birden fazla kolonu kapsayacak şekilde de yapılabilir. Bir indeks en fazla 15 kolonu kapsayabilir. Çoklu indeks, içerdiği kolonları kapsayan AND işlemleri sırasında kullanılır.
* MySQL'in indeksi kullanması tablonun %30'undan fazlasına erişmesini gerektirecekse, o zaman MySQL var olmasına karşın indeksi kullanmamayı tercih edecektir. Çünkü böyle bir sorguda, sıralı arama yapmak büyük olasılıkla rasgele aramadan daha hızlı olacaktır.


!
06-04-2008 01:32
Kullanıcının websitesini ziyaret et Bu kullanıcının gönderdiği mesajları bul Bu mesajı bir cevapta alıntı yap
Alfa
Mybb
*****


Mesajlar: 1,269
Grup: Üye
Katılım: 2007
Statü: Çevrimdışı
Karma Puanı: 15
Mesaj: #3
RE: MySQL Hakkında Temel Bilgiler

Neden MySQL?

* Çok hızlı, güvenilir ve kullanımı kolay.
* MySQL'e Python'dan Java'ya kadar birçok programlama dili ile erişilebilir.
* Apache ve PHP ile beraber web-veritabanı uygulamalarında çok yaygın olarak kullanılır. Apache-PHP-MySQL üçlüsü için hazırlanmış çok geniş bir yazılım yelpazesi bulunuyor.
* Özellikle internet ortamında önem kazanan, çok esnek ve güçlü bir kullanıcı erişim kısıtlama/yetkilendirme sistemine sahip.


en kısa özeti Gülücük Paylaşım için teşekkürler

06-04-2008 01:33
Kullanıcının websitesini ziyaret et Bu kullanıcının gönderdiği mesajları bul Bu mesajı bir cevapta alıntı yap
Gang$ta
bhdr.bilader.com
*****


Mesajlar: 1,007
Grup: Moderatör
Katılım: 2006
Statü: Çevrimdışı
Karma Puanı: 9
Mesaj: #4
RE: MySQL Hakkında Temel Bilgiler

Indekslerin Kullanıldığı Sorgular

* WHERE ifadesine uyan satırları hızlıca bulmak
* Belirli bir kolonun MAX() ve MIN() değerlerini bulmak
* Sıralama ve gruplama işlemleri
* Join işlemleri için diğer tablolardan satırları almak
* Wildcard ile başlamayan LIKE ifadelerinde

Tüm Metinde Arama (Full-text Search)

* Tabloda indeks olarak ayarlandığı kolon(lar)da doğal dil araması yapar. Tıpkı bir arama motoru gibi ilgili metinleri kelimelere ayırarak indeks oluşturur. Arama yapılan metinler ne kadar büyük olursa, o kadar verimli çalışır.
* Tüm metinde arama özelliği sadece MyISAM tablo tipinde kullanılabilir. Standart bir indeks gibi, tablo yaratılırken ya da daha sonra oluşturulabilir.
* FULLTEXT indeksleri; CHAR, VARCHAR ya da TEXT/BLOB veri tipleri için kullanılabilir.
* Tüm metinde arama MATCH() fonksiyonu ile gerçekleştirilir.
* FULLTEXT indeks, alanın tamamına uygulanmak zorundadır. Sadece belirli bir kısmına yapılamaz.

Sorgu Cache'i (Query Cache)

* MySQL, bir kullanıcı tarafından yapılan bir SELECT sorgusunun metnini ve sorgunun sonucunu cache'ler. Aynı sorgu tekrar yapıldığında ise veritabanında tarama yapmak yerine cache'deki veriyi kullanıcıya gönderir.
* Cache, bayat veri göndermez. Bir tablo güncellendiğinde, o tabloda yapılmış olan tüm sorgular cache'ten silinir.
* Verilerin çok fazla okunduğu ancak nadiren güncellendiği uygulamalarda büyük kazanç sağlar.

Replikasyon

* Tek yönlü replikasyon, hem sistemin sağlamlığını hem de hızını arttırmak için kullanılabilir.
* Sağlamlık için, iki sisteminiz olabilir ve ana sunucuda problem çıktığında yedek olana geçebilirsiniz.
* Hız için ise, güncelleme içermeyen sorguları yedek sunucuya yönlendirebilirsiniz.
* Veritaban(lar)ının birkaç farklı fiziksel mekanda bulunması gerekiyorsa, replikasyon ile verilerin sürekli güncel olması sağlanabilir.
* Replikasyon sırasında dikkat edilmesi gereken en önemli nokta, tüm güncelleme işlemlerinin ana sunucuda yapılmasıdır. Aksi takdirde dikkatli olunmadığında veri kaybına yol açılabilir.


!
06-04-2008 01:33
Kullanıcının websitesini ziyaret et Bu kullanıcının gönderdiği mesajları bul Bu mesajı bir cevapta alıntı yap
Gang$ta
bhdr.bilader.com
*****


Mesajlar: 1,007
Grup: Moderatör
Katılım: 2006
Statü: Çevrimdışı
Karma Puanı: 9
Mesaj: #5
RE: MySQL Hakkında Temel Bilgiler

MySQL KURULUMU

Kaynak kodlarından Türkçe sıraya dizme desteği ile derlemek için,

* tar -zxf /root/mysql-4.0.22.tar.gz
cd mysql-4.0.22
./configure --prefix=/usr/local/mysql --with-charset=latin5
make
make install
cp /usr/local/mysql/share/mysql/mysql.server /usr/local/mysql/bin
/usr/local/mysql/bin/mysql_install_db
groupadd mysql
useradd -g mysql mysql
chown -R root /usr/local/mysql
chown -R mysql /usr/local/mysql/var
chgrp -R mysql /usr/local/mysql
/usr/local/mysql/bin/mysql.server start
cd ..
rm -rf mysql-4.0.22

phpMyAdmin
http://www.phpmyadmin.net


* phpMyAdmin, özellikle MySQL'in web-veritabanı çözümlerde kullanımında her geçen gün defacto standart haline gelen yönetim arayüzüdür.
* Web üzerinden çalıştığı için bir ek istemci programa ihtiyaç duymaksızın, herhangi bir bilgisayardan uzaktaki MySQL sunucuyu yönetilebilir.
* "Root" olarak tüm bir MySQL sunucusunu yönetebileceğiniz gibi sadece belirli bir veritabanını da yönetebilirsiniz. phpMyAdmin hangi kullanıcı ismi ile veritabanına bağlanırsa, onun haklarına sahip olur.
* Birden fazla MySQL sunucusunu da, her birinin kendi ayarlarıyla tek bir phpMyAdmin ile yönetebilirsiniz.
* Türkçe de dahil olmak üzere 45+ dilde kullanılabilir.
* Her türlü kayıt ekleme, silme, değiştirme; veritabanı/tablo yaratma; kullanıcı açma/yetkilendirme; kısacası aklınıza gelen her şeyi phpMyAdmin ile SQL komutlarına ihtiyaç duymaksızın yapabilirsiniz.
* Veritabanının içeriğini SQL komutlarından oluşan bir dosyaya boşaltabilir, daha sonra o dosyadan veritabanını istediğiniz başka herhangi bir sunucuda oluşturabilirsiniz.
* Bu hazır tanımlanmış işlemlerin dışında her tür SQL komutunu kendiniz yazarak çalıştırabilir, phpMyAdmin'i tam bir SQL istemcisi gibi kullanabilirsiniz.

MySQL Query Browser
http://www.mysql.com/products/querybrowser/


* SQL sorgularınızı kolayca oluşturmak, uygulamak ve analiz etmek için bir görsel araç.
* SQL sorgularınızı görsel araçların yanı sıra elle kodlayarak da oluşturabilirsiniz.
* Sorgu tarihçesi sayesinde daha önce yaptığınız sorgulara kolaylıkla ulaşabilirsiniz.
* Birden fazla sorgu sonucuna farklı sekmelerden (tab) ulaşabilir ve onları karşılaştırabilirsiniz.
* Sorgu sonuçlarını bir hesap tablosunun hücreleri gibi düzenleyebilirsiniz.
* Veritabanlarınızda yer alan tabloları oluşturabilir, değiştirebilir ve silebilirsiniz.
* Seçilen nesneler, parametreler ve fonksiyonlar için ayrıntılı yardım bölümleri bulunuyor.
* Hem Linux hem Windows sürümleri bulunuyor.


!
06-04-2008 01:34
Kullanıcının websitesini ziyaret et Bu kullanıcının gönderdiği mesajları bul Bu mesajı bir cevapta alıntı yap
Gang$ta
bhdr.bilader.com
*****


Mesajlar: 1,007
Grup: Moderatör
Katılım: 2006
Statü: Çevrimdışı
Karma Puanı: 9
Mesaj: #6
RE: MySQL Hakkında Temel Bilgiler

MySQL Administrator
http://www.mysql.com/products/administrator/


* MySQL veritabanı sunucusunun yönetimi ve bakımı için bir grafik arayüz.
* Komut satırından yapabileceğiniz tüm işlemleri görsel bir ortamda sunar.
* Kullanıcı yönetimi
* MySQL sunucusunun dinamik olarak sağlık :-) durumunun izlenebilmesi
* Yedekleme ve yedeklerden geri yükleme
* Sunucu kayıtlarının (log) incelenmesi
* Sunucunun optimizasyonu
* Sunucuda yer alan tüm veritabanı ve tabloların incelenmesi ve optimize edilebilmesi
* Hem Linux hem Windows sürümleri bulunuyor.

Diğer Grafik Arayüzler

* MySQLYog -- http://www.webyog.com/
* MySQLFront -- http://www.mysqlfront.de
* QtMyAdmin
http://mion.elka.pw.edu.pl/~mjankows/qtmyadmin/
* Mascon -- http://www.scibit.com
* DBManager -- http://www.dbtools.com.br/EN/

MySQL'DE KULLANICILAR ve YETKİLENDİRME

* MySQL'de tüm kullanıcılar ve yetkileri, "mysql" isimli bir veritabanında tutulur.
* Bir kullanıcı iki parçadan oluşur : kullanici_ismi@bilgisayar_ismi (hostname). Bu ikiliyi MySQL tek bir kullanıcı olarak algılar. Yani ahmet@localhost ile ahmet@penguen aynı kullanıcılar değildir (localhost ve penguen aynı makinalar olsa dahi).
* Bir kullanıcının 4 yetki seviyesi vardır. Her yetki seviyesi için mysql isimli veritabanında birer tablo bulunur.
* Hiyerarşik olarak bu tablolar en genelden özele doğru tanımlama yapar.
* User tablosu : Bağlanan kullanıcının sunucuya bağlanma hakkı olup olmadığını kontrol eder. Eğer erişim hakkı varsa, kullanıcı tabloda kendisi için belirtilen yetkilere sahip olur.
* Db tablosu : Hangi kullanıcıların hangi veritabanlarına hangi bilgisayarlardan ulaşabileceğini belirler. Eğer kullanıcının ilgili veritabanına erişim hakkı varsa, tabloda kendisi için belirtilen yetkilere sahip olur.
* Tables_priv tablosu : Aynı db tablosu gibi çalışır, ancak veritabanları yerine içindeki tablolara erişimi düzenler.
* Columns_priv tablosu : Aynı db ve tables_priv tabloları gibi çalışır, ancak veritabanlarının içindeki tabloların içindeki kolonlara erişimi düzenler.

MySQL'DE KULLANICILAR ve YETKİLENDİRME

mysql veritabanı
|
|
user
|
|
db
|
|
tables_priv
|
|
columns_priv




* Yetki tabloları ve mysql isimli veritabanı, normal MySQL veritabanları gibi çalışır. INSERT, UPDATE, DELETE gibi standart sql komutları ile tıpkı herhangi bir veritabanı üzerinde işlem yapıyor gibi kullanıcı tanımları yapabilirsiniz.

MySQL'DE KULLANICILAR ve YETKİLENDİRME

Kullanıcılara Verilebilen Yetkiler

* Select_priv : Kayıtları okuma
* Insert_priv : Kayıt ekleme
* Update_priv : Kayıt değiştirme/güncelleme
* Delete_priv : Kayıt silme
* Create_priv : Veritabanı/tablo yaratma
* Drop_priv : Veritabanı/tablo kaldırma
* Reload_priv : MySQL'i yeniden başlatma
* Shutdown_priv : MySQL'i kapatma
* Process_priv : MySQL'de çalışan işlemleri takip etme
* File_priv : Sunucudan dosya okuyup / yazma
* Grant_priv : Başka kullanıcılara yetki verme
* Index_priv : Indeks yaratma, değiştirme, silme
* Alter_priv : Tablo ya da veritabanının yapısını değiştirme
* Show_db_priv : Veritabanı listeleme
* Lock_tables_priv : Tablo kitleme
* Max_questions : Bir saat içinde yapılabilecek enfazla sorgu sayısı
* Max_updates : Bir saat içinde yapılabilecek en fazla güncelleme sorgusu sayısı
* Max_connections : Bir saat içinde yapılabilecek en fazla bağlantı sayısı

MySQL'in kullanıcı tablolarında herhangi bir değişiklik yaptığınız zaman, değişikliklerin aktif hale gelebilmesi için FLUSH PRIVILEGES komutunu MySQL sunucusuna göndermeniz gerekir.


!
06-04-2008 01:36
Kullanıcının websitesini ziyaret et Bu kullanıcının gönderdiği mesajları bul Bu mesajı bir cevapta alıntı yap
Gang$ta
bhdr.bilader.com
*****


Mesajlar: 1,007
Grup: Moderatör
Katılım: 2006
Statü: Çevrimdışı
Karma Puanı: 9
Mesaj: #7
RE: MySQL Hakkında Temel Bilgiler

MySQL için Güvenlik Önerileri

* Root kullanıcısına bir şifre tanımladığınıza emin olun, MySQL standart kurulumunda size root kullanıcısına bir şifre vermenizi söyler ama buna sizi zorlamaz.
* MySQL sunucusunu root olarak çalıştırmayın.
* Eğer MySQL'le sadece kendi çalıştığı sunucudan bir program bağlantı kuracaksa (çoğu web-veritabanı uygulamasında olduğu gibi), TCP/IP servisini kapatın (--skip-networking). Aynı bilgisayardaki web sunucu MySQL'e bağlanmak için zaten çok daha hızlı olan unix soketlerini kullanacaktır.
* MySQL'in sembolik linklenmiş tabloları kullanmasına izin vermeyin (--skip-symlink seçeneği).
* Tek bir kullanıcının kurabileceği en fazla bağlantı sayısını mysqld'nin max_user_connections seçeneği ile ayarlayabilirsiniz. Böylece bir kullanıcı herhangi bir nedenle çok fazla bağlantı açtığında (programındaki bir hata veya saldırı amacıyla), MySQL zor durumda kalmayacaktır.
* "process" yetkisini kullanıcılara vermeyin. Kendi halinde bir kullanıcının veritabanının o anda yaptığı sorguların neler olduğuna öğrenmeye ihtiyacı olmaması gerekir.
* "file" yetkisini kullanıcılara vermeyin. Aksi takdirde MySQL kullanıcısının hakları ile sunucunuzdaki diledikleri yere yazabilir ve okuyabilirler.
* MySQL sunucunuzun kullandığı DNS'in yanıltılması olasılığına karşı; erişim kısıtlamaları tanımlarken, bilgisayar ismi yerine IP numarası kullanabilirsiniz. O zaman MySQL'i --skip-name-resolve seçeneği ile çalıştırarak sadece IP numaraları ile çalışmasını ve hiç DNS kullanmamasını sağlayabilirsiniz.
* Veritabanı dosyalarının bulunduğu dizine (orn. /usr/local/mysql/var) sadece mysql kullanıcısının okuma/yazma hakkı olduğundan emin olun.
* MySQL'i sakın --skip-grant-tables seçeneği ile çalıştırmayın. Bu, MySQL'in yetkilendirme sistemini iptal ederek çalışmasına ve tüm kullanıcıların veritabanlarına tam erişime sahip olmasına yol açar.

MySQL Sunucu için Performans İpuçları

* MySQL'in hangi opsiyonlar ile çalışmakta olduğu SHOW VARIABLES komutu ile görülebilir.
* MySQL'in optimizasyon ayarları my.cnf dosyasından yapılıyor. Örnek ayar dosyaları mevcut.
* my-huge.cnf -- bellek = 1-2 GB
* my-large.cnf -- bellek = 512 MB
* my-medium.cnf -- bellek = 128 MB
* my-small.cnf -- bellek < 64 MB
* Unix soketleri yerine TCP/IP üzerinden bağlanılırsa %7.5 daha yavaş çalışır
* İstemci ile sunucunun farklı bilgisayarlarda olması durumunda, 100 mbit ethernet bağlantılarında bile %8-11 daha yavaş bağlanılır
* MySQL, kurulum sırasında statik yerine dinamik derlenmiş ise %13 daha yavaş çalışır
* Diske verilerin SSL ile şifrelenmiş olarak yazılması %55 performans kaybına yol açar
* Ayrıntılı bilgi : http://dev.mysql.com/doc/en/Optimising_the_Server.html

MySQL Log Dosyaları

* Error Log : MySQL sunucusu başlatılırken, durdurulurken ya da çalışırken oluşan hata kayıtları (makinaismi.err)
* Query Log : Sunucuya yapılan tüm bağlantıların ve uygulanan sorguların kayıtları (makinaismi.log)
* Binary Log : Veritabanında tutulan bilgilerde değişiklik yapan tüm sorguların kayıtları -- replikasyon için de kullanılır (makinaismi-bin*)
* Slow Log : Belirli bir süreden daha uzun süren ve/ya indeks kullanmayan sorguların kayıtları (makinaismi-slow.log)
* Ayrıntılı bilgi :
http://dev.mysql.com/doc/en/Log_Files.html

MySQL'in Yedeklenmesi

* Sunucu seviyesinde yedekleme
Veri dizininin (ör: /usr/local/mysql/var) topluca yedeklenmesi. Bu dizin MySQL veritabanları, kullanıcıları ve log dosyalarını içerir.
- mysqlhotcopy
* SQL seviyesinde yedekleme
Veritabanlarının SQL komutlarından oluşan bir metin dosyası olarak yedeğinin alınması (sqldump)
- mysqldump
- mysqlimport
* BACKUP TABLE / RESTORE TABLE
* Ayrıntılı bilgi :
http://www.mysql.com/doc/en/Backup.html

Programlama Arayüzleri (API)

Resmi API'ler

* C API'si MySQL kaynak kodu ile beraber geliyor.
* Connector/ODBC - ODBC sürücüleri
* Connector/J - Java'dan bağlanmak için
* Connector/Net - .NET'ten bağlanmak için

Diğer API'ler

* PHP API'si PHP programlama dili ile beraber geliyor.
http://www.php.net
* Perl için DBI/DBD modülleri
http://search.cpan.org/dist/DBI/
* Python için MySQL-Python
http://sourceforge.net/projects/mysql-python/
* Ruby için MySQL-Ruby
http://www.tmtm.org/en/mysql/ruby/
* Tcl için Tcl-SQL
http://sourceforge.net/projects/tcl-sql/
* C++ için MySQL++ (C API'sine wrapper)
http://tangentsoft.net/mysql++/

MySQL Programlama
için Performans İpuçları

* Sorguda LIKE '%string%' gibi bir ifade kullanıldığında, eğer string 3 karakterden daha uzun ise, MySQL özel bir algoritma kullanarak daha hızlı arama yapar.
* Tablolar üzerinde yaptığınız sorguların, yaptığınız indeksleri kullandığına emin olun. EXPLAIN komutuyla yaptığınız herhangi bir SELECT sorgusu ile ilgili ayrıntılı bilgi alabilirsiniz.
* Sık güncellenen MyISAM tablolarında tablo kitleme problemlerinden kaçınmak için karmaşık SELECT sorguları kullanmamaya özen gösterin.
* Çok güncelleme yapılan tablolarda, VARCHAR ve BLOB/TEXT dinamik boylu veri tipleri kullanılmazsa performans artışı sağlanır.
* Bir tablodaki satırların sıralamasını ALTER TABLE komutuyla değiştirebilirsiniz. Eğer bir tablodan sürekli belirli bir sıraya göre veri alıyorsanız, özellikle büyük güncellemelerden sonra tablodaki satırları uygun biçimde sıralamak performansı arttıracaktır.
* Alanların öntanımlı değerleri olmasının avantajını kullanın. Gireceğiniz veri öntanımlı değerle aynı ise, özel olarak belirtmenize gerek yoktur. Böylece MySQL daha az veri ayrıştıracak (parse) ve veriyi daha hızlı veritabanına girecektir.
* Web üzerinden yazılım geliştirirken, resimleri veritabanında tutmak yerine resim dosyası olarak dosya sisteminde tutup, veritabanına sadece resmin nerede olduğunun bilgisini yerleştirmeyi tercih edin. Bir web sunucusu dosya cache'leme konusunda, veritabanı bilgisi cache'lemekten daha başarılıdır. MySQL'in resim üzerinde arama yapma ve benzeri özellikleri olmadığından, pratikte resmi veritabanında saklamanızın da bir anlamı yoktur.

MySQL 4.1'in Yenilikleri

* İçiçe sorgular
* Daha hızlı bir istemci/sunucu protokolü
* Bir çağrıda çok sayıda sorgu gönderebilme ve çok sayıda sonuç alabilme
* Her bağlantı için istemcinin zaman dilimini belirtebilmesi
* UTF-8 ve UCS-2 desteği
* Tablo ve kolon isimleri de artık UTF8 olarak saklanıyor
* Veritabanı, tablo, kolon bazlı dil seçimi
* Coğrafi verilen saklanması için OpenGIS uzaysal veri tipleri
* HEAP tabloları için BTREE indeksleme
* Replikasyonun SSL tünellenebilmesi
* INSERT ... ON DUPLICATE KEY UPDATE ... söz dizimi sayesinde birincil (primary) ya da biricik (unique) bir alanda aynı veriye sahip başka kayıt varsa, yeni bir kayıt ekle(yeme)mek yerine mevcut verinin güncellenmesi
* GROUP_CONCAT() fonksiyonuyla gruplanan satırlar üzerinde daha fazla esneklik
* Sunucu bazlı HELP komutu. SQL sorgusu olarak gönderildiğinden herhangi bir istemciden erişilebilir.
* CREATE TABLE tbl_name2 LIKE tbl_name1 söz dizimi ile yapısal olarak aynı ikinci bir tablo yaratabilme
* MyISAM tabloları için birçok ince ayar yapılabilen yeni anahtar cache'i.
* SHOW WARNINGS ve SHOW ERRORS ifadeleri
* ... (ve niceleri)
* 4.0 sürümünden 4.1'e geçiş sırasında dikkat edilmesi gerekenler
http://dev.mysql.com/doc/mysql/en/Upgrad...m-4.0.html

SQL KAYNAKLARI

* Introduction to SQL
http://rootus.org/docs/Programming/SQL-Tutor/
* Database Normalization
http://www.devshed.com/Server_Side/MySQL/Normal

Veri Modelleme

* DIA
http://www.lysator.liu.se/~alla/dia/dia.html
* TediaSql
http://tedia2sql.tigris.org
* Data Architect
http://www.thekompany.com/products/dataarchitect/
* DeZign
http://www.datanamic.com

KAYNAKLAR

* Türkçe Linux Dokümanları
http://www.belgeler.org
* Türkiye Linux E-Posta Listeleri
http://liste.linux.org.tr
* MySQL'in El Kitabı

http://dev.mysql.com/doc/en/
(elektronik ortamda)

* MySQL makaleleri ve sunumları
http://dev.mysql.com/tech-resources/
* MySQL ile ilgili çeşitli anlatımlar
http://www.devshed.com/Server_Side/MySQL/
* Planet MySQL
http://www.planetmysql.org/


!
06-04-2008 01:38
Kullanıcının websitesini ziyaret et Bu kullanıcının gönderdiği mesajları bul Bu mesajı bir cevapta alıntı yap
*Tickhi Ban!!
Banlanmış


Mesajlar: 9
Grup: Banlanmış
Katılım: 2008
Statü: Çevrimdışı
Mesaj: #8
RE: MySQL Hakkında Temel Bilgiler

Bu bilgileri sen yazdıysan önünde diz çöküp eğiliyorum.

06-04-2008 03:16
Kullanıcının websitesini ziyaret et Bu kullanıcının gönderdiği mesajları bul Bu mesajı bir cevapta alıntı yap
Sayfa (2): « İlk [1] 2 Sonraki > En Son »
Mesaj Önizleme  Konuyu Gönder 

Yazdırılabilir Bir Versiyona Bak
Bu Konuyu Bir Arkadaşına Gönder
Bu Konuya Abone Ol | Konuyu Favorilerine Ekle


Veteriner hekimler Klip İzle Taha'nın Yeri Kampus Alanya Otel Ara Alanya Travel Msn Nickleri vBCoders blackinci Baybars