mssql db sunucuyu cok kasıyor

0
Onaylı Üye
Üye
Katılım
25 Haziran 2005
Mesajlar
4,856
Tepki puanı
6
Konum
Bursa
herkese merhaba kendime ait sunucumda www.eudownload.net adında bir sitem var site mssql veri tabanı ile calışıyor ve bu sitenin tikil hiti cok az olmasına rağmen bu veritabanı sunucuya cok ağır bir yuk bindiriyor bu veritabanı icin ne yapabilirim ne icin kasabilir bu veritabanı sunucudaki cpu kullanımını %100 e kadar cıkartıyor bu db bilgili arkadaşların yardımlarını bekliyorum saygı ve sevgi ile
 
0
Onaylı Üye
Üye
Katılım
11 Kasım 2004
Mesajlar
284
Tepki puanı
0
öncelikle "SQL Profiler" dan bi izleme yap. bakalım "kasan" query hangisi?
 
0
Onaylı Üye
Üye
Katılım
25 Haziran 2005
Mesajlar
4,856
Tepki puanı
6
Konum
Bursa
merhaba sql profiler den baktım işde aşağıdaki resim

sss.jpg
 
0
Onaylı Üye
Üye
Katılım
11 Kasım 2004
Mesajlar
284
Tepki puanı
0
bu değil. sen yanlış yere bakmışsın :)

SQL Server Enterprise Manager'i aç. Tools menusunde SQL Profiler i aç. File / New / Trace yap. Db bilgilerini gir ve izlemeye başla. Buradaki ayarlar ile kısıtlama yaparsan aradığını daha rahat bulursun. Özellikle 2 saniyeyi geçen query lere bi bak.
Eğer sorunun kaynağı querylerden değilse, site kapalıyken de mssql %100 oluyormu? webserver ile mssql server aynı networktemi arada switch varmı, vs.. daha fazla bilgi vermen gerekecek...
 
0
Onaylı Üye
Üye
Katılım
25 Haziran 2005
Mesajlar
4,856
Tepki puanı
6
Konum
Bursa
oncelikle sunu soyleyeyim siteyi kapattığım zaman sunucu normal calışıyor sql ve web aynı sunucudalar
 
0
Onaylı Üye
Üye
Katılım
25 Haziran 2005
Mesajlar
4,856
Tepki puanı
6
Konum
Bursa
az once anlattığını yaptım sonuclar resimdeki gibi ve site kapalı iken sql ve sunucu kasılmıyor webserver ve sql server ikiside aynı sunucu uzerinde barınıyorlar

kkk.jpg
 
0
Onaylı Üye
Üye
Katılım
8 Mart 2005
Mesajlar
1,247
Tepki puanı
0
http://forum.iyinet.com/422777-post5.html

Kisa bir bilgi vermistim.

Daha fazlasi icin sunu da soylemek isterim.
* Kullanmayacagin bilgileri tablodan cekmemelisin ( SELECT * FROM TABLO ... ) yerine ( SELECT id, kategori, isim FROM TABLO ... ) seklinde cekmen.
* Connection pooling kullanman.
* Birden fazla tabloyu ayni anda kullanacagin zaman tablolari iliskilendirmen.
* Stored prodecture kullanman.
* Cok fazla kayit varsa like kullanacagin bolgelerde like degil de fulltextsearch kullanman. ( Arama motorlari genelde full text search kullanir bu yuzden bu kadar fazla veriyi bu kadar hizli getirir. )

vs. vs. vs. Query Analy. den soyledikleri gibi CPU degeri en yuksek olan sorguyu gosterirsen buna gore bir islem yapmak ve cozum uretmek daha mantikli olacaktir.

Saygilar.
 
0
Onaylı Üye
Üye
Katılım
11 Kasım 2004
Mesajlar
284
Tepki puanı
0
kernel32 bahsettiklerin zaten "must be" şeyler. trdownload un sorunu başkaydı. hallettik.
benzer sorunları olanlar bana pm atabilir.
 
0
Onaylı Üye
Üye
Katılım
8 Mart 2005
Mesajlar
1,247
Tepki puanı
0
@sitemedya sadece sorunu olanlarin sorununu halletmek icin cevap yazilmaz. Ayni sorun ile karsilasabilecekler icin de karsilasmamalari icin cevap yazilir.
 
Root
Root
İyinet Ekibi
Onaylı Üye
Katılım
2 Eylül 2002
Mesajlar
5,043
Tepki puanı
79
Konum
SEO
0
Onaylı Üye
Üye
Katılım
25 Haziran 2005
Mesajlar
4,856
Tepki puanı
6
Konum
Bursa
Kernel32 nin de dedigi gibi, sitemedya bu bilgileri bizimle paylasirsan seviniriz.

sorun sayfadaki rastgele program ceken kodlarla alakalı imiş
eski kod

PHP:
<%
	for i = 1 to 10
	Set rd = server.CreateObject("ADODB.Recordset")
	sqlstr = "SELECT * FROM files where durum = 1 order by file_name desc;"
	rd.open sqlstr,conn,1,1
randomize
say = Int(rnd*rd.recordcount)-0
rd.move(say)
%>

yeni kod

PHP:
<%

	Set rd = server.CreateObject("ADODB.Recordset")

	sqlstr = "SELECT max(file_id) as kayitmaxx FROM files where durum = 1"
	rd.open sqlstr,conn,1, 1
	kayitxxx=rd("kayitmaxx")
	rd.close
	
	i = 1
	while i<=40
		randomize
		say = Int(rnd*(cint(kayitxxx)))

		sqlstr = "SELECT TOP 1 file_id, cat_id, file_name FROM files where durum = 1 and file_id=" + trim(cstr(say))
		rd.open sqlstr,conn,1, 1
		if not(rd.eof) then
			if i/2<>int(i/2) then response.write "<tr>"
%>

arkadaş asp kodlarımı bu şekilde değiştirince sorun ortadan kalktı kendisine teşekkur ederim.
 
Root
Root
İyinet Ekibi
Onaylı Üye
Katılım
2 Eylül 2002
Mesajlar
5,043
Tepki puanı
79
Konum
SEO
sorun sayfadaki rastgele program ceken kodlarla alakalı imiş
eski kod

PHP:
<%
    for i = 1 to 10
    Set rd = server.CreateObject("ADODB.Recordset")
    sqlstr = "SELECT * FROM files where durum = 1 order by file_name desc;"
    rd.open sqlstr,conn,1,1
randomize
say = Int(rnd*rd.recordcount)-0
rd.move(say)
%>

yeni kod

PHP:
<%
 
    Set rd = server.CreateObject("ADODB.Recordset")
 
    sqlstr = "SELECT max(file_id) as kayitmaxx FROM files where durum = 1"
    rd.open sqlstr,conn,1, 1
    kayitxxx=rd("kayitmaxx")
    rd.close
 
    i = 1
    while i<=40
        randomize
        say = Int(rnd*(cint(kayitxxx)))
 
        sqlstr = "SELECT TOP 1 file_id, cat_id, file_name FROM files where durum = 1 and file_id=" + trim(cstr(say))
        rd.open sqlstr,conn,1, 1
        if not(rd.eof) then
            if i/2<>int(i/2) then response.write "<tr>"
%>

arkadaş asp kodlarımı bu şekilde değiştirince sorun ortadan kalktı kendisine teşekkur ederim.

Bu detaylari paylasman guzel oldu, zira sana daha verimli bir yontem sunacagim:

PHP:
SELECT TOP 1 file_id, cat_id, file_name FROM files WHERE durum = 1 ORDER BY NEWID()

Bu yontem ile her seferinde rastgele "file_id, cat_id, file_name" cekmis olacaksin. Ek bir ASP kodlamasi (randomize falan) gerekmeden.
 
0
Onaylı Üye
Üye
Katılım
11 Kasım 2004
Mesajlar
284
Tepki puanı
0
Bu detaylari paylasman guzel oldu, zira sana daha verimli bir yontem sunacagim:

PHP:
SELECT TOP 1 file_id, cat_id, file_name FROM files WHERE durum = 1 ORDER BY NEWID()

Bu yontem ile her seferinde rastgele "file_id, cat_id, file_name" cekmis olacaksin. Ek bir ASP kodlamasi (randomize falan) gerekmeden.

iyinet, mssql konusunda bilgi sahibi olduğun belli ama yanlışın var. bu komut bu amaçla kullanılmamalıdır. mssql kullananları yanlış yönlendirmeyelim.

NEWID(), uniqueidentifier tipinde benzersiz bir değer yaratır ancak bu değer sınırlıdır. yani, örneğinizde, DB içinde 5000 kayıdınız varsa, 5000 kayıt arasından random kayıt getirmez !!!. denemek isteyen "sql query analyzer" üzerinden tsql kod yazıp deneyebilir.

@sitemedya sadece sorunu olanlarin sorununu halletmek icin cevap yazilmaz. Ayni sorun ile karsilasabilecekler icin de karsilasmamalari icin cevap yazilir.

Kernel32, öncelikle amacım, webmasterların (programcıların) biraz araştırmacı olması, cevaplarını kendilerinin bulmaya çalışması, herşeyin de hazır olmamasıdır. Programlama bilmek hataları çözme sanatı, programcı da bu sanatı icra edendir. O yüzden direkt cevap yazmamaya çalışıyorum. Galiba bu konuda sizden farklı düşünüyorum. TrDownload 'un olayı başka. Uzun zamandır altından kalkamadığı bir sorundu ve halledemiyordu..

TrDownload: Keşke tek sorun o olsaydı :). En çok uğraştıran oydu ama kodlarında başka hatalar da vardı ve düzeltildi.
 
0
Onaylı Üye
Üye
Katılım
25 Haziran 2005
Mesajlar
4,856
Tepki puanı
6
Konum
Bursa
iyinet, mssql konusunda bilgi sahibi olduğun belli ama yanlışın var. bu komut bu amaçla kullanılmamalıdır. mssql kullananları yanlış yönlendirmeyelim.

NEWID(), uniqueidentifier tipinde benzersiz bir değer yaratır ancak bu değer sınırlıdır. yani, örneğinizde, DB içinde 5000 kayıdınız varsa, 5000 kayıt arasından random kayıt getirmez !!!. denemek isteyen "sql query analyzer" üzerinden tsql kod yazıp deneyebilir.

TrDownload: Keşke tek sorun o olsaydı :). En çok uğraştıran oydu ama kodlarından yaklaşık olarak 20 hata daha düzeltildi.

Kernel32: hepsini tek tek yazamam !

bende inkar etmedim zaden :p
 
Root
Root
İyinet Ekibi
Onaylı Üye
Katılım
2 Eylül 2002
Mesajlar
5,043
Tepki puanı
79
Konum
SEO
iyinet, mssql konusunda bilgi sahibi olduğun belli ama yanlışın var. bu komut bu amaçla kullanılmamalıdır. mssql kullananları yanlış yönlendirmeyelim.

NEWID(), uniqueidentifier tipinde benzersiz bir değer yaratır ancak bu değer sınırlıdır. yani, örneğinizde, DB içinde 5000 kayıdınız varsa, 5000 kayıt arasından random kayıt getirmez !!!. denemek isteyen "sql query analyzer" üzerinden tsql kod yazıp deneyebilir.

TrDownload: Keşke tek sorun o olsaydı :). En çok uğraştıran oydu ama kodlarından yaklaşık olarak 20 hata daha düzeltildi.

Kernel32: hepsini tek tek yazamam !

Degerlerin sinirli oldugu konusunda sana katiliyorum. %100 dagilim saglamak random fonsiyonlari ile mumkun olmuyor.

Her seferinde baska bir kayit istiyorsaniz haklisiniz, bu onun cozumu degil.

Ame her seferinde rastgele bir kayit icin, basit bir cozum yontemidir ve kodlamadan tasarruf saglar.

Ingilizcesi olanlar icin bu article okuyabilirler.
http://www.sqlteam.com/item.asp?ItemID=8747
 
0
Onaylı Üye
Üye
Katılım
25 Haziran 2005
Mesajlar
4,856
Tepki puanı
6
Konum
Bursa
Degerlerin sinirli oldugu konusunda sana katiliyorum. %100 dagilim saglamak random fonsiyonlari ile mumkun olmuyor.

Her seferinde baska bir kayit istiyorsaniz haklisiniz, bu onun cozumu degil.

Ame her seferinde rastgele bir kayit icin, basit bir cozum yontemidir ve kodlamadan tasarruf saglar.

Ingilizcesi olanlar icin bu article okuyabilirler.
http://www.sqlteam.com/item.asp?ItemID=8747

cektiğimiz kayıt tek olsa verdiğiniz kod fayda sağlardı ama her defasında veritabanından 40 rastgele kayıt cekiyorum ilginiz icin yinede teşekkurler +rep
 
Root
Root
İyinet Ekibi
Onaylı Üye
Katılım
2 Eylül 2002
Mesajlar
5,043
Tepki puanı
79
Konum
SEO
cektiğimiz kayıt tek olsa verdiğiniz kod fayda sağlardı ama her defasında veritabanından 40 rastgele kayıt cekiyorum ilginiz icin yinede teşekkurler +rep

"ilginiz icin yinede teşekkurler" ile benden kurtulamazsiniz :)

40 rastgele kod cekmek icin yapmaniz gereken 1 yerine 40 kayit cekmek.

PHP:
SELECT TOP 40 file_id, cat_id, file_name FROM files WHERE durum = 1 ORDER BY NEWID()

+rep icin de tesekkurler.
 
0
Onaylı Üye
Üye
Katılım
11 Kasım 2004
Mesajlar
284
Tepki puanı
0
Degerlerin sinirli oldugu konusunda sana katiliyorum. %100 dagilim saglamak random fonsiyonlari ile mumkun olmuyor.

Her seferinde baska bir kayit istiyorsaniz haklisiniz, bu onun cozumu degil.

Ame her seferinde rastgele bir kayit icin, basit bir cozum yontemidir ve kodlamadan tasarruf saglar.

Ingilizcesi olanlar icin bu article okuyabilirler.
http://www.sqlteam.com/item.asp?ItemID=8747

mssql random konusunda biraz fakir kalmış. Mesela, güçlü bir komut olan oracle daki dbms_random.value(x, y) komutunun eşdeğeri yok. Küçük sayılar için NEWID(), daha esnek range ler için DATE functionları veya başka yöntemler kullanılabiliyor.

daha önceden dediğim gibi, bahsettiğin durum TrDownload için uygun değildi. ama uygun olabilecek arkadaşlar mutlaka olacaktır.
 
0
Onaylı Üye
Üye
Katılım
11 Kasım 2004
Mesajlar
284
Tepki puanı
0
"ilginiz icin yinede teşekkurler" ile benden kurtulamazsiniz :)

40 rastgele kod cekmek icin yapmaniz gereken 1 yerine 40 kayit cekmek.

PHP:
SELECT TOP 40 file_id, cat_id, file_name FROM files WHERE durum = 1 ORDER BY NEWID()

+rep icin de tesekkurler.

iyinet, ısrarla aynı hatayı yapıyorsun. !!! Trdownload için NEWID uygun değil. ama istersen bu konuyu msn den daha hararetli tartışabiliriz. :)
 
Geri
Üst