Bende öyle dşünüyorum, barış beyin dediği gibi sorgulama "Select * from mytable where myfield like 'bişey%" şeklinde gerçekleşiyor dün gece epeyi ugraştım ve söyle bi çözüm uyguladım;

5 adet arama alanını 1 e düşürüp sadece ad alanına göre arama yaptırıyorum gene "like 'bişey%'" şeklinde. sorgudan önce count edip max 1000 sınırı koyuyorum şimdi çok düzgün çalışıyor tabloyu tablo_ax,tablo_bq,...tablo_yz ve tablo_diğer olarak 17 parçaya böldüm enfazla tablo_ax de kayıt oldu 2 milyon kadar ondada bir skıkıntı olmadı ancak 5 sene içerisinde tablolar sıkısacak o zamanda ssd gibi donanımsal çözümleri değerlendiricem tabi ssd teknolojisi hala yerini başka XXsd lere bırakmadıysa :)

yardımlarınız için teşekkür ederim, kolay gelsin..



11.12.2011 12:21, Atıf CEYLAN yazmış:
Hocam index kullanmiyor olabilir. Order yaptiginiz veri kac satirdan olusuyor? Yani 
"...where field=123 order by hede" dediniz diyelim, field 123 sartindan donen 
en cok deger kac satir? Cok uzun siralamalar var ve sonucunda limitleme yapiyorsaniz 
bekleme nedeni o da olabilir. Sorguyu calistirmadan once read ve order buffer degerlerini 
yuksek bir degere set etmeniz hatiri sayilir hiz saglayabilir. Bir de birlikte kullanilan 
indexleri tek tek degil birlikte indexlemeyi deneyin.
Field1,field2 tek index gibi.

"[email protected]"<[email protected]>  wrote:

5 alanı ayrı ayrı index mevcut ancak index yapmadanda denedim sonuç çok
değişmedi
oe-rder kullanıyorum kullanıcının seçeceği 3 alandan birine göre
tablo tipini myisam ve innodb olarak denedim ikiside süreyi kısaltmadı
şimdilik anlık sorgulama yapan 1 kişi var ancak sunucuya talşıyınca 50
civarı olucak

Vedat beyin dediği gibi tabloyu parçalamayı düşünüyorum, bu durumda
mecburen 5 alanı 1 e düşürerek  sadece isme göre arama yapıcam ve kayıt
işleminide başharfe göre gerekli tabloya yazıcam

conf dosyası aşağıda, bu dosyayı internetten okuduğum bilgilere göre
değiştirdim

port            = 3306
socket          = /var/run/mysqld/mysqld.sock

[mysqld]
port            = 3306
socket          = /var/run/mysqld/mysqld.sock
skip-locking
#key_buffer_size = 384M
key_buffer_size = 1G
max_allowed_packet = 8M
table_open_cache = 512
sort_buffer_size = 2M
read_buffer_size = 2M
read_rnd_buffer_size = 8M
myisam_sort_buffer_size = 64M
thread_cache_size = 8
query_cache_size = 32M
thread_concurrency = 8

log-bin=mysql-bin

server-id       = 1

innodb_buffer_pool_size = 1024M
innodb_additional_mem_pool_size = 256M

innodb_thread_concurrency = 8
innodb_flush_method = O_DIRECT

[mysqldump]
quick
max_allowed_packet = 16M

[mysql]
no-auto-rehash

[myisamchk]
key_buffer_size = 256M
sort_buffer_size = 256M
read_buffer = 2M
write_buffer = 2M

[mysqlhotcopy]
interactive-timeout


10.12.2011 23:49, Atıf CEYLAN yazmış:
Sorgulama yaptıgınız alanlarda ındex varmı? Bırde mysql ındexlemeyı
eskıden farklı fıeldları ayrı ayrı ındexledıgınızde hafızada map
etmeyı beceremıyordu (sanırım 6-7 yıl önce).

Bu nedenle birlikte kullanılan alanları birlikte indexlemek cok işe
yarıyordu. Tabi bu kadar zamandır mysql kullanmadığım için fazla yorum
yapamıyacağım ancak indexlemede sorun yoksa bu sayıda bir tablodan
sadece where clause ekleyerek sorgu yapmanın bu kadar uzun sürmemesi
lazım. Tabi order, group vb işlemler yapmıyor olduğunuzu farz
ediyorum. Ayrıca mysql konfigurasyonu ve kullandığınız tablo tipi nedir?

Anlık sorgulama yapan kaç kullanıcı var? Bu soruların cevapları da önemli.

10.12.2011 16:00, [email protected] yazmış:

Merhaba arkadaşlar ;

Mysql de 15 milyon olan ve ayda 100 bin artan bir tablomuz var 27
alandan oluşan ve sorgulama arayüzünü delphi7 de yaptım;

5 alana göre arama yapıyorum kullanıcı 5 alanadan istediğini veri
girerek sorgulama yapabiliyor, dönen adet 500 ü geçiyorsa kriteri
artırımasını istiyorum

ancak geri dönüş süreleri çok uzun oluyor minimum 1 dk 40 sn civarı

bu süreyi nasıl minimuma indirebilirm ?

denediklerim

-- tabloyu myisam ile oluşturdum 1dk 40sn -3 dkcivarı sonuç aldım
-- innodb ye çevirdim durum biraz garipleşti 30 sn ile  7 dk arasında
değişti
-- tabloyu bölemiyorum sabit bir kriterim yok (sene gibi 2004, 2005)

aramalarımda 3 alan için "like %" diğer iki alan için "=" kullanıyorum,
5 alanıda ayrı ayrı indexledim.


sistem özellikleri ;
mysql  Ver 14.14 Distrib 5.1.49, for debian-linux-gnu (x86_64) using
readline 6.1

test makinam : Intel(R) Core(TM) i5 CPU 650  @ 3.20GHz 3GB RAM

tüm denemeleri bu sistemde yaptım.

--
/**
   **@author*  Atıf CEYLAN
   * Software Developer&   System Admin
   * http://www.atifceylan.com
   */


_______________________________________________
Linux-sunucu E-Posta Listesi
[email protected]

Liste kurallarını http://liste.linux.org.tr/kurallar.php  bağlantısından 
okuyabilirsiniz;

Bu Listede neden bulunduğunuzu bilmiyorsanız veya artık bu listeden gelen 
e-postaları almak istemiyorsanız aşağıdaki bağlantı adresini kullanarak 1 
dakika içinde üyeliğinizi sonlandırabilirsiniz.
https://liste.linux.org.tr/mailman/listinfo/linux-sunucu

_______________________________________________
Linux-sunucu E-Posta Listesi
[email protected]

Liste kurallarını http://liste.linux.org.tr/kurallar.php  bağlantısından 
okuyabilirsiniz;

Bu Listede neden bulunduğunuzu bilmiyorsanız veya artık bu listeden gelen 
e-postaları almak istemiyorsanız aşağıdaki bağlantı adresini kullanarak 1 
dakika içinde üyeliğinizi sonlandırabilirsiniz.
https://liste.linux.org.tr/mailman/listinfo/linux-sunucu
_______________________________________________
Linux-sunucu E-Posta Listesi
[email protected]

Liste kurallarını http://liste.linux.org.tr/kurallar.php  bağlantısından 
okuyabilirsiniz;

Bu Listede neden bulunduğunuzu bilmiyorsanız veya artık bu listeden gelen 
e-postaları almak istemiyorsanız aşağıdaki bağlantı adresini kullanarak 1 
dakika içinde üyeliğinizi sonlandırabilirsiniz.
https://liste.linux.org.tr/mailman/listinfo/linux-sunucu


_______________________________________________
Linux-sunucu E-Posta Listesi
[email protected]

Liste kurallarını http://liste.linux.org.tr/kurallar.php  bağlantısından 
okuyabilirsiniz;

Bu Listede neden bulunduğunuzu bilmiyorsanız veya artık bu listeden gelen 
e-postaları almak istemiyorsanız aşağıdaki bağlantı adresini kullanarak 1 
dakika içinde üyeliğinizi sonlandırabilirsiniz.
https://liste.linux.org.tr/mailman/listinfo/linux-sunucu

Cevap