mssql db sunucuyu cok kasıyor

0
Onaylı Üye
Üye
Katılım
25 Haziran 2005
Mesajlar
4,856
Tepki puanı
6
Konum
Bursa
ısrarlar uzerine iyinet in verdiği kodu yeni bir sayfada deneyim bakalım neler olcak :)
 
0
Onaylı Üye
Üye
Katılım
11 Kasım 2004
Mesajlar
284
Tepki puanı
0
kodlamayı düzgün yaparsan mutlaka ki olacak.
ama senin DB den sağlıklı random yapamayacak. kaybın bu.
kazancın ise 0,001 ms olacak :)
 
Root
Root
İyinet Ekibi
Onaylı Üye
Katılım
2 Eylül 2002
Mesajlar
5,043
Tepki puanı
77
Konum
SEO
ısrarlar uzerine iyinet in verdiği kodu yeni bir sayfada deneyim bakalım neler olcak :)

Aman ha, sitemedyanin yaptigi diger fix leri kaybetme. O kadar emek bosa gitmesin.

Benim verdigim kodu girmen icin ASP kodunda degisiklik yapman gerekiyor!

while i<=40

bolumunun kalkmasi gerekiyor!

Denemekten zarar cikmaz.
En verimli koda deneye deneye ulasiyoruz.
 
Root
Root
İyinet Ekibi
Onaylı Üye
Katılım
2 Eylül 2002
Mesajlar
5,043
Tepki puanı
77
Konum
SEO
iyinet, ısrarla aynı hatayı yapıyorsun. !!! Trdownload için NEWID uygun değil. ama istersen bu konuyu msn den daha hararetli tartışabiliriz. :)

MSN kullanmiyorum.
Ama burada tartisabiliriz.
Hata yapiyorsam ogrenmek isterim.
 
0
Onaylı Üye
Üye
Katılım
25 Haziran 2005
Mesajlar
4,856
Tepki puanı
6
Konum
Bursa
yok sitemdyanın verdiği kodu bozmayacağım ayrı bir sayfada deniycem.
 
0
Onaylı Üye
Üye
Katılım
11 Kasım 2004
Mesajlar
284
Tepki puanı
0
+ tableda kayıt sayısı arttıkça, "DB response" ciddi derecede yavaşlar.

Benzer komut olan MYSQL deki RAND() için de aynı tehlike sözkonusudur...

Kod:
http://www.titov.net/2005/09/21/do-not-use-order-by-rand-or-how-to-get-random-rows-from-table/
 
0
Onaylı Üye
Üye
Katılım
8 Mart 2005
Mesajlar
1,247
Tepki puanı
0
Oncelikle soyledigim seyi art niyetli soylemedim. Ama esnek bir cevabi herkesin bilmesini istedigim icin soyledim.

@iyinet @sitemedya nin da dedigi gibi NewID() MsSQL de rastgele kayitlar icin oldukca yoran bir islem. CPU kullanimi, ram kullanimi oldukca artar bu islemde. ve yine @sitemedya 'nin dedigi gibi mssql bu konuda biraz pasif kalmis durumda.
 
0
Onaylı Üye
Üye
Katılım
7 Ocak 2006
Mesajlar
36
Tepki puanı
0
Konum
istanbul
NewID() yük getiren bir işlemdir katılıyorum ancak MSSQL'de en eşit dağılımlı rastgele kayıtları getiren işlemdir.

Ayrıca arkadaşın kodunu incelediğiniz zaman görüyoruz ki rastgele kayıt işlemini asp yani kod kısmında yapıyor.
MSSQL de yapılmaması hız yönünden avantaj sağlar.

Bu kodda sadece akla şu geliyor bu kayıtların arasında hiç boşluk yok mu yani hepsi 1,2,3...N şeklinde birer birer mi artıyor eğer öyle değilse 40 yerine mesela 39 yada daha düşük kayıt listelenebilir.

Diğer bir yandan 40 kez "farklı" sorgulama yapıyorsun bunun da veritabanında bir maaliyeti olacaktır, bu maaliyeti sql profiler kullanarak NEWID() ile karşılaştırmanı öneririm.

Bir kaç arkadaşım NewID tamamen rastgele getirmez yazmış, MSSQL'de en iyi rastgele çözümünü sunan fonksiyon budur.
Eğer hız sizin için önemliyse şu şekilde bir komutu da deneyebilirsiniz, fark ederseniz arkadaşın aspde kullandığıyla hemen hemen aynı... Tek fark aynı işlemler asp de değil mssql de yapılıyor. (asp de yapılması daha uygun zaten)

Kod:
SELECT TOP 1 file_id, cat_id, file_name FROM files WHERE durum = 1 and file_id >= (Select Max(file_id)*Rand() From files WHERE durum=1)
 
0
Onaylı Üye
Üye
Katılım
25 Haziran 2005
Mesajlar
4,856
Tepki puanı
6
Konum
Bursa
konuyu musadenizle yeniden canlandırmak istiyorum;
kategori sayfalarım gereğinden fazla yavaş acılıyor ne yaptıysam halledemedim mssql den anlayan birisi yardımcı olabilirmi

PHP:
<%Response.Buffer=1%>
<!--#include file = "frame.asp" -->
<%
cat_id = guvenlik(REQUEST.QUERYSTRING("cat_id"))
IF Not IsNumeric(REQUEST.QUERYSTRING("cat_id")) THEN
response.write "L?fen Ge?rli bir ID numaras?girin."
response.end
END IF
page1 = Request.QueryString("pege1")
page2 = Request.QueryString("pege2")
order_by = Request.QueryString("order_by")
if order_by = "" then
order_by = "file_id desc"
end if


page = Request.QueryString("page")
if page<>"" then
page=page
else
page=1

end if
Set rrs = Server.CreateObject("ADODB.Recordset")
nere = "Select * From cats where cat_id = "&cat_id&""
rrs.Open nere, conn, 1, 1


set ii = conn.execute("Select count(*) as toplam From files where cat_id="&cat_id&" and durum= 1")
toplamprogram = ii("toplam")
ii.close
set ii = nothing
set ii = conn.execute("select * from files where durum= 1 order by hit desc")

set yn = conn.execute("Select * From files where durum = 1 order by file_id desc")



Set ed = Server.CreateObject("ADODB.Recordset")
nere = "Select * from files where cat_id = "&cat_id&" and durum = 1 and tavsiyeli = 1"
ed.Open nere, conn, 1, 1
 
set tum = Server.CreateObject("ADODB.Recordset")
tumu = "Select cat_name,cat_id From cats"
tum.open tumu,conn,1,1
if not ed.EOF then
edx = ed.Recordcount
Randomize
id = (Int(edx * rnd)+0)
ed.Move(id)
end if
Set rs = Server.CreateObject("ADODB.Recordset")
nere = "Select * From files where cat_id = "&cat_id&"  and durum = 1 "&page1&" "&page2&" order by "&order_by&""
rs.Open nere, conn, 1,1
if page = "" then
intpage = 1
else
intpage = page
end if
rsx = rs.RecordCount
rs.PageSize = 10
rs.CacheSize = rs.PageSize
if not rs.EOF then
rs.AbsolutePage = intpage
end if
    if yn.eof then 
  	response.write ("wrong id"):
    response.end
  	else
%>

yukarıdaki kodları nasıl optimize edebiliriz ?

kodlar mssql veritabanı uzerinde calışıyor
 
Root
Root
İyinet Ekibi
Onaylı Üye
Katılım
2 Eylül 2002
Mesajlar
5,043
Tepki puanı
77
Konum
SEO
Gereğinden fazla SQL kullanılmış ve SQL kodunda güvenlik açığı var.
Gereksiz SQL ler temizlenip, güvenlik açığı kapatıldıktan sonra, index tanımlamaları da kontrol edilir eksik varsa indexler yaratılır.
 
0
Onaylı Üye
Üye
Katılım
25 Haziran 2005
Mesajlar
4,856
Tepki puanı
6
Konum
Bursa
oncelikle alakanızdan dolayı teşekkurler mssql veri tabanını henuz yeni öğrenmeye başladım site daha onceden ms acces veritabanı kullanıyordu program sayısının falalığı ve biraz ileriyi düşünerek db yi mssql e import ettim kodlarda gerekli değişiklikleride yaptım mssql veritabanında index tanımlamayı bilmiyorum aslına bakacak olursak nasıl tanımlanıyor index onuda bilmiyorum daha cok oğrenceklerim var mssql hakkında

bu arada site ingilizce olduğu için buraya yazmak isdemiyorum adresi özür dilerim
 
0
Onaylı Üye
Üye
Katılım
25 Haziran 2005
Mesajlar
4,856
Tepki puanı
6
Konum
Bursa
yokmu şimdi koca forumda arkadaşlar asp+mssql den anlayan :)
 
Root
Root
İyinet Ekibi
Onaylı Üye
Katılım
2 Eylül 2002
Mesajlar
5,043
Tepki puanı
77
Konum
SEO
bir önceki sayfada verdiğin cat.asp miydi?
 
0
Onaylı Üye
Üye
Katılım
25 Haziran 2005
Mesajlar
4,856
Tepki puanı
6
Konum
Bursa
cat.asp deki sorgular bironceki sayfadakiler
 
Root
Root
İyinet Ekibi
Onaylı Üye
Katılım
2 Eylül 2002
Mesajlar
5,043
Tepki puanı
77
Konum
SEO
3 db ninde tüm tablolarında hiç index yokmuş.
20 kadar index yarattım, hepsi de gerekli indexler.
Şimdi sayfalar çok daha hızlı açılyor, hatta eskisine göre uçuyor.
SQL Kodları da optimiz et demiştim ama çok anlamıyorsan bırak, çu hali ile iyi çalışıyor.
 
0
Onaylı Üye
Üye
Katılım
25 Haziran 2005
Mesajlar
4,856
Tepki puanı
6
Konum
Bursa
indexler ve yardimlariniz için teşekkürler daha önce mssql deneyimim hic olmamıştı normalde bu kodlar acces veritabanına göre yazıldı ve acces veritabanında gayet güzel ve hızlı calışıyor sql e gecince biraz afalladı site aslında siteyi sql uyumlu hale tamamen ben getirdim nasıl yaptım onuda bilmiyorum :p yardimlar için tekrar teşekkurler
 
Geri
Üst