[Linux-programlama] Re: MySQL: sorgu analizi

---------

[Linux-programlama] Re: MySQL: sorgu analizi

From: Atıf CEYLAN <atifceylan_at_gmail.com>
Date: Tue, 08 Apr 2008 09:50:06 +0300
Message-ID: <47FB159E.2050803@gmail.com>

OKAN ARI yazmýþ:
> Bu cok ciddi bir soru/sorun olarak benim de basýmda. Benim acýmdan
> soyle bi gerceklik mevcut.
>
> Select oraný %80'lerden fazla olan bir ilan yayýnlama sitemde, myisam
> bence en verimli sonucu veriyor. Burda insert yapýlýrken olusan table
> lock dolayýsýyla gerceklesen fazla bekleme sureci bence goz ardý
> edilebilir.
>
> Ancak diger taraftan yine myisam kullandýýgm bir community sitem
> mevcut. Burda insert sorgular select ile neredeyse basa bas. Myisam
> burda cok basarýsýz. Oyle ki ortalam gunluk 100.000 sayfa gosterimi
> asla asamýyorum. 80-90 bilerden sonra mysql ciddi bir limite
> dayanýyor. InnoDB bir alternatif olarak karsýmda duruyor ancak innoDB
> ile olusturulmamýs bir DB yi innodb yapmak urkutuyor biraz. Local'de
> bir kac deneme yaptým. Veritabaný innodb yapýlamadý! cok ilginc,
> 2milyon kayýtlý bir tablo bir turlu inndb formatýnda insert edilemedi.
> Bu belki tablo yaýsýnda, belki ayarlardan kaynaklandý ancak, inndb ile
> calismak ne goturur kestiremedim.
>
> Onumde tahm,nen yaklasýk %30 insert/update olacak bir proje duruyor.
> Mysql kullanýcam ama tablo yapýsýna karar veremedim bir turlu. Burdaki
> gorusleri merakla takip ediyorum
>
> ----- Original Message -----
> *From:* Ismail ASCI <mailto:ismail.asci_at_gmail.com>
> *To:* linux-programlama_at_liste.linux.org.tr
> <mailto:linux-programlama_at_liste.linux.org.tr>
> *Sent:* Sunday, April 06, 2008 11:13 PM
> *Subject:* [Linux-programlama] Re: MySQL: sorgu analizi
>
>
>
> 2008/4/6 Anýl KARADAÐ <anil.karadag_at_gmail.com
> <mailto:anil.karadag_at_gmail.com>>:
>
> Bir sorum daha olacaktý tabloma gunluk yaklasýk 1500 yeni kayýt
> girmektedir. select sayýsý insert/updated den cok fazla bu
> yuzden yeni
> bir index ekleyebilirim.
>
> Ancak innodb onerisi uzerine
> http://www.mysqlperformanceblog.com/2007/01/08/innodb-vs-myisam-vs-falcon-benchmarks-part-1/
>
> deki sonucu inceledim. insert iþlemi için Myisam a gore daha
> hýzlý ama
> myisam da read iþleminde daha hýzlý.
>
>
> The second goal of benchmark was a popular "*myth*" that MyISAM is
> faster than InnoDB in reads, as InnoDB is transactional, supports
> Foreign Key and has an operational overhead. *As you will see it
> is not always true*.
>
> Ben myisam'a pek fazla sicak bakmayanlardanim. Mysql uzerindeki is
> yuku arttiginda benim gozlerimlerime ve internetteki kaynaklara
> dayanarak innodb'nin daha etkin bir cozum olacagini dusunuyorum.
> Sahsen myisam kullanmamaya ozen gosteriyorum.
>
>
>
>
> tablom read iþlemi için daha cok kullnýlýyor ama insert
> iþlemindeki bir
> gecikme 1 saatlik periyod ile kayýt alan bir sistemde kayt
> alýmlarýný
> birbirine yaklaþtýrýyor.
>
> verdiginiz rakamlardan saatte yaklasik 100 kayit insert ettiginizi
> dusunursek bu oldukca kotu bir zaman gibi gorunuyor. Bence
> kullandiginiz makinaya ve mysql ayarlarina bakmakta fayda var.
>
>
>
>
> Ek bir soru diyelim ki myisam ile yoluma devam ettim suan 4
> tane index
> im oldu. her yeni kayýtta bu indexler yeniden oluþuyor bu
> ciddi bir
> gecikmeye yol açmaz mý?
>
>
>
> Paz, 2008-04-06 tarihinde 21:52 +0300 saatinde, Ismail ASCI yazdý:
> > Merhabalar,
> >
> > 2008/4/6 Anýl KARADAÐ <anil.karadag_at_gmail.com
> <mailto:anil.karadag_at_gmail.com>>:
> > harflendirme yapayým derken hatalar yapmýsým. indeks
> kullanmak
> > insert
> > islemlerinde sorun yaratmýyor mu? Yani suan 3 tane
> indexli
> > alaným var
> > bunu arttýrmak mantýklý mý?
> >
> > index kullanmak tabiki daha fazla io ve daha fazla cpu anlamina
> > geliyor. Ancak burada verilmesi gereken stratejik karari
> kullandiginiz
> > uygulamaniza gore siz vermelisiniz. Mesela toplam
> insert/update ve
> > select sayilarinin birbirlerine oranlarina bakarak karari
> > verebilirsiniz. Eger select'lerin orani insert/update'lere
> gore daha
> > fazlaysa daha fazla index kulllamanin pek sakincasi olmaz diye
> > dusunuyorum. Yine index'lerinizi uygulamanizda en sik
> kullanilan
> > sorgulara gore olusturmaniz faydali olacaktir.
> >
> >
> >
> > "KEY 'e' USING BTREE ('e')"
> >
> >
> > ben sorgularda arama yaptýgým 3 alanda index
> kullnýyorum.
> > datetime
> > alanýnda index yok. O kýsmýný yanlýþ göstermisim.
> >
> > yardýmlarýnýz icin tesekkurler ancak 350.000 habere
> mysql in
> > bu kadar
> > yavas tepki vereceðini tahmin edemezdim.
> >
> > Birazda olayin dogasi geregi boyle oluyor. Uzerinde index
> olmayan
> > alanlarda sorgu yaptiginizda biraz kacilinilmaz oluyor bu durum.
> > Deneyerek ve explain komutunu yaninizdan ayirmadan yasayarak
> efektif
> > cozumler uretebilirsiniz bence...
> > Ayrica su [1] adresteki cozum onerilerini deneyebilirsiniz.
> >
> > [1]
> >
> http://www.mysqlperformanceblog.com/2006/06/09/why-mysql-could-be-slow-with-large-tables/
> >
> > Kolay gelsin.
> >
> >
> >
> >
> > Cts, 2008-04-05 tarihinde 22:40 +0300 saatinde,
> Ismail ASCI
> > yazdý:
> >
> > > tekrar merhabalar,
> > > gonderdiginiz tablo yapisinda mysql olusturdugunuz
> > index'leri
> > > kullanmayacaktir. yani onlari olusturmus olmanizin bir
> > faydasi yok.
> > > basitce f ve e alanlari uzerinde key yeni (f, e)
> seklinde
> > bir index
> > > olusturmaniz oldukca faydali olacaktir diye
> dusunuyorum.
> > > bu asamadan sonra
> > > 1. sorgunuzda order by random() yerine
> > > select a, b, c, random() as x ......order by x
> seklinde
> > deneyebilir
> > > misiniz?
> > > 2. ve 3. sorgular da ise benim aklima gelen pek
> birsey yok
> > acikcasi
> > > esit degil ve not null pek hos durmuyorlar orada :)
> > >
> > > kolay gelsin.
> > >
> > > 2008/4/4 Anýl KARADAÐ <anil.karadag_at_gmail.com
> <mailto:anil.karadag_at_gmail.com>>:
> > > harflendirmeleri duzenledim
> > >
> > > tablo1:
> > >
> > > 'a' mediumint(11) NOT NULL auto_increment,
> > > 'b' text
> > > 'c' text
> > > 'd' text
> > > 'e' datetime,
> > > 'f' varchar(20) ,
> > > 'g' varchar(20) ,
> > > PRIMARY KEY ('a'),
> > > KEY 'e' USING BTREE ('e'),
> > > KEY 'b' ('b'(50),'c'(250))
> > > ) ENGINE=MyISAM
> > >
> > > SELECT a,b,c FROM tablo1 WHERE f='x' AND
> > > > cast(e as date)= '".$date."'
> ORDER BY
> > rand() LIMIT
> > > 10
> > > >
> > > > 2-SELECT COUNT(*) FROM tablo1
> WHERE f='x'
> > and
> > > > cast(e as date)= '".$date."' and
> (c != ''
> > or c is
> > > not null)
> > > >
> > > > 3-SELECT MAX(a) FROM tablo WHERE f=
> > '".$cat." ' and
> > > > cast(e as date)= '".$date."' and
> (c != ''
> > or c is
> > > not null)
> > >
> > > Sorgu cýktýlarý ile ilgili ne gibi bir
> acýklama
> > koyabilirim
> > > anlayamadým
> > > tam olarak?
> > >
> > > Cum, 2008-04-04 tarihinde 23:39 +0300
> saatinde,
> > Ismail ASCI
> > > yazdý:
> > >
> > > > Merhaba,
> > > > index'ler hangi alanlarda tanimlilar?
> > > > cast(b as date) kullanmanizin nedeni nedir?
> > > > ayrica ORDER BY rand() pek efektif sonuclar
> > doguracak gibi
> > > gorunmuyor.
> > > > tablonuzun yapisini ve bu uc sorgunun
> explain
> > ciktisini
> > > > gonderebilirseniz daha fazla yardimci olmaya
> > calisabilirim.
> > > > kolay gelsin..
> > > >
> > > > 2008/4/4 Anýl KARADAÐ
> <anil.karadag_at_gmail.com <mailto:anil.karadag_at_gmail.com>>:
> > > > Herkese iyi aksamlar MySQL
> kullanan ve
> > tablolarýnda
> > > 300.000
> > > > satir ve
> > > > uzeri veriye sahip ve veritabanindan
> > sorumlu
> > > uyelerimizin
> > > > dikkatine
> > > >
> > > > Suan 350.000 satýr veri iceren
> bir tablom
> > > bulunmaktadýr. 1
> > > > primary key
> > > > ve 2 tane normal index
> içermekte. Arama
> > yaptigim
> > > diger bircok
> > > > kolonda
> > > > index bulunmuyor.
> > > >
> > > > 1-SELECT a,b,c FROM tablo1 WHERE
> a='x' AND
> > > > cast(b as date)= '".$date."'
> ORDER BY
> > rand() LIMIT
> > > 10
> > > >
> > > > 2-SELECT COUNT(*) FROM tablo1
> WHERE a='x'
> > and
> > > > cast(b as date)= '".$date."' and
> (c != ''
> > or c is
> > > not null)
> > > >
> > > > 3-SELECT MAX(e) FROM tablo WHERE a=
> > '".$cat." ' and
> > > > cast(b as date)= '".$date."' and
> (c != ''
> > or c is
> > > not null)
> > > >
> > > > ve benzeri sorgulari
> calistirdigim php
> > sayfasi cok
> > > gec
> > > > yukleniyor. Bu
> > > > duruma nasýl cozum bulabilirim.
> Belirtmen
> > gereken
> > > bir nokta
> > > > tablonun
> > > > dinamik olusudur. Gunluk
> ortalama bir
> > sayida kayit
> > > > girilmektedir.
> > > >
> > > > Kayit girilirken db uzerinde cesitli
> > sorgular
> > > yapilmaktadir.
> > > > Kisacasi
> > > > sistemde veri girisi sorgusu ve
> > goruntuleme
> > > sorgularý ayni
> > > > zaman
> > > > diliminde gerceklesmektedir
> gunun belirli
> > bir
> > > diliminde.
> > > >
> > > > Cluster konusuna bakiyorum.
> Onerilerinizi
> > > bekliyorum.
> > > >
> > > >
> > _______________________________________________
> > > > Linux-programlama mailing list
> > > >
> Linux-programlama_at_liste.linux.org.tr
> <mailto:Linux-programlama_at_liste.linux.org.tr>
> > > >
> > >
> >
> http://liste.linux.org.tr/mailman/listinfo/linux-programlama
> > > >
> > > >
> > > >
> > > > --
> > > > Ismail ASCI
> > > > Pozitim Technology
> > > > www.pozitim.com <http://www.pozitim.com>
> > > >
> > > > -----BEGIN PGP PUBLIC KEY BLOCK-----
> > > > Version: GnuPG v1.4.2.2 (GNU/Linux)
> > > >
> > > >
> > >
> >
> iFQEIBECABQFAkRIDJMNHQBiYWNrdXAgY29weQAKCRBgYvyi4RxNdcnIAJ9vweb8
> > > >
> > vUH9m3a2aQHyAfeo0oJtlACfQiqcbHvdBtrxylRh42G2xea7gFM=
> > > > =Xy4T
> > > > -----END PGP PUBLIC KEY BLOCK-----
> > > >
> _______________________________________________
> > > > Linux-programlama mailing list
> > > > Linux-programlama_at_liste.linux.org.tr
> <mailto:Linux-programlama_at_liste.linux.org.tr>
> > > >
> >
> http://liste.linux.org.tr/mailman/listinfo/linux-programlama
> > >
> > >
> _______________________________________________
> > > Linux-programlama mailing list
> > > Linux-programlama_at_liste.linux.org.tr
> <mailto:Linux-programlama_at_liste.linux.org.tr>
> > >
> >
> http://liste.linux.org.tr/mailman/listinfo/linux-programlama
> > >
> > >
> > >
> > >
> > > --
> > > Ismail ASCI
> > > Pozitim Technology
> > > www.pozitim.com <http://www.pozitim.com>
> > >
> > > -----BEGIN PGP PUBLIC KEY BLOCK-----
> > > Version: GnuPG v1.4.2.2 (GNU/Linux)
> > >
> > >
> >
> iFQEIBECABQFAkRIDJMNHQBiYWNrdXAgY29weQAKCRBgYvyi4RxNdcnIAJ9vweb8
> > > vUH9m3a2aQHyAfeo0oJtlACfQiqcbHvdBtrxylRh42G2xea7gFM=
> > > =Xy4T
> > > -----END PGP PUBLIC KEY BLOCK-----
> > > _______________________________________________
> > > Linux-programlama mailing list
> > > Linux-programlama_at_liste.linux.org.tr
> <mailto:Linux-programlama_at_liste.linux.org.tr>
> > >
> http://liste.linux.org.tr/mailman/listinfo/linux-programlama
> >
> > _______________________________________________
> > Linux-programlama mailing list
> > Linux-programlama_at_liste.linux.org.tr
> <mailto:Linux-programlama_at_liste.linux.org.tr>
> >
> http://liste.linux.org.tr/mailman/listinfo/linux-programlama
> >
> >
> >
> >
> > --
> > Ismail ASCI
> > Pozitim Technology
> > www.pozitim.com <http://www.pozitim.com>
> >
> > -----BEGIN PGP PUBLIC KEY BLOCK-----
> > Version: GnuPG v1.4.2.2 (GNU/Linux)
> >
> > iFQEIBECABQFAkRIDJMNHQBiYWNrdXAgY29weQAKCRBgYvyi4RxNdcnIAJ9vweb8
> > vUH9m3a2aQHyAfeo0oJtlACfQiqcbHvdBtrxylRh42G2xea7gFM=
> > =Xy4T
> > -----END PGP PUBLIC KEY BLOCK-----
> > _______________________________________________
> > Linux-programlama mailing list
> > Linux-programlama_at_liste.linux.org.tr
> <mailto:Linux-programlama_at_liste.linux.org.tr>
> > http://liste.linux.org.tr/mailman/listinfo/linux-programlama
>
> _______________________________________________
> Linux-programlama mailing list
> Linux-programlama_at_liste.linux.org.tr
> <mailto:Linux-programlama_at_liste.linux.org.tr>
> http://liste.linux.org.tr/mailman/listinfo/linux-programlama
>
>
>
>
> --
> Ismail ASCI
> Pozitim Technology
> www.pozitim.com <http://www.pozitim.com>
>
> -----BEGIN PGP PUBLIC KEY BLOCK-----
> Version: GnuPG v1.4.2.2 (GNU/Linux)
>
> iFQEIBECABQFAkRIDJMNHQBiYWNrdXAgY29weQAKCRBgYvyi4RxNdcnIAJ9vweb8
> vUH9m3a2aQHyAfeo0oJtlACfQiqcbHvdBtrxylRh42G2xea7gFM=
> =Xy4T
> -----END PGP PUBLIC KEY BLOCK-----
>
> ------------------------------------------------------------------------
> _______________________________________________
> Linux-programlama mailing list
> Linux-programlama_at_liste.linux.org.tr
> http://liste.linux.org.tr/mailman/listinfo/linux-programlama
>
> ------------------------------------------------------------------------
>
> _______________________________________________
> Linux-programlama mailing list
> Linux-programlama_at_liste.linux.org.tr
> http://liste.linux.org.tr/mailman/listinfo/linux-programlama
>
postgresql denemenizi ýsrarla öneririm. 2 yýldýr basit siteler haricinde
hiç bir projede mysql kullanmadým kullanmýyorum. transaction, trigger,
rule, view.... (bazýlarý innodb ile mysql de de var ancak innodb
kullanacaksam neden mysql kullanayým :) ) bir sürü özellik benim için
artýk lüks olmaktan cýkýp hayatýn gerekleri haline gelmiþtir. saðlamlýk,
güç, kararlýlýk vs. vs. bunlarda cabasý. inanýn bana postgresql'e
geçiþte yaþayacaðýnýz bir iki ufak sýkýntý sonrasýnda oldukça rahat
edeceksiniz. ayrýca ilerisi kararsýzlýk ve belirsizliklerle dolu bir
mysql görüyorum ki beni çok üzüyor ve ürkütüyor. Adeta "siz þu MyISAM
ile uðraþýn durun, bu sistemle büyük projeler geliþtirmeyin sakýn.
Geliþtirecekseniz bakýn burada innoDB var (o da artýk Ora-KIL ürünü ve
baþýna neler gelecek Allah bilir), enterprise çözümüm olan MaxDB var
gelin bunlarý istiyorsanýz yan cebime biraz mangýr sýkýþtýrýn. bende
biraz tekelleþeyim, paranýn yüzü sýcak" diyor.
Benim nazarýmda PostgreSQL'in yanýna yanaþamaz. Elbette kimsenin yal
çanaðýný tutmak gibi bir derdim yok ancak yüzmilyonlarý aþan tablolarda
mysql'den neler cektiðimi Allah bilir.

kolay gelsin
Atýf CEYLAN
_______________________________________________
Linux-programlama mailing list
Linux-programlama_at_liste.linux.org.tr
http://liste.linux.org.tr/mailman/listinfo/linux-programlama
Received on Tue 08 Apr 2008 - 09:02:13 EEST

---------

Bu arsiv hypermail 2.2.0 tarafindan uretilmistir.