folder Tahribat.com Forumları
linefolder Database - Veritabanı
linefolder Veritabanı Konusunda Kafama Takılan Birşey



Veritabanı Konusunda Kafama Takılan Birşey

  1. KısayolKısayol reportŞikayet pmÖzel Mesaj
    Ayro
    Ayro's avatar
    Kayıt Tarihi: 08/Ağustos/2005
    Erkek

    şimdi tablo diye bir tablo düşünün bunun içinde 1. durumda şöyle birşey olsun

    oncelik1
    oncelik2
    oncelik3

    bunların hepsi alan.Farklı şeyler var içlerinde.İd, cevap , anahtar...Birde;

    genel 

    var bunun  içinde id, cevap, anahtar birde oncelik var.Öncelik kısmına 1,2,3 giriyorum.

    Şimdi merak ettiğim soru şu bir sql sorgusunda;

    select id from genel where oncelik=1 yapmak mı yoksa

    select id from oncelik1 yapmak mı daha mantıklı ?

    yani genel tablosunda oncelik=1 dediğimizde bütün kayıtları okur mu ? eğer öyleyse perfromans kaybı yaşamaz mı ? çünkü oncelik 1,2,3 olduğunu anlamak için işlem yapması gerek her satıra ayrı ayrı....

  2. KısayolKısayol reportŞikayet pmÖzel Mesaj
    DarkF4Te
    DarkF4Te's avatar
    Kayıt Tarihi: 02/Mart/2008
    Erkek

    hocam düz mantık oncelik seviyeleri farklı olan kayıtları bir tabloda tutmaktansa ayırmanın yararlı olacağın işaret eder ama kullanım yerine göre değişir tabi.
    Eğer önceliğe göre ayrılırsa tabloların içerecek sayısı, kayıt miktarı düşer.
    E ne kadar az kayıt o kadar performanstır bi yerde.


    Her tabloda 500.000 kayıt olsa 1.5 milyon kayıt barındıran bir tabloda sorgu yapmak mı yoksa 500bin kayıt barındıran tablolar da sorgu yapmakmı iyidir diyerekten soruyla neden böyle olduğunuda açıklıyabiliriz.

    ayrıca zuqlü bekliyoruz :D 

  3. KısayolKısayol reportŞikayet pmÖzel Mesaj
    Ayro
    Ayro's avatar
    Kayıt Tarihi: 08/Ağustos/2005
    Erkek

    :D gelecek gelcek.Önce mysqlun falan çalışma mantığını çözmeme lazım

    ve maalesef googleda arıyorum hala adam gibi Türkçe döküman bulamadım :-/

    edit: 

    bu arada demek istediğm kesinlikle o mesela oncelik1,2,3 olsun

    500-500-500 bölmek daha sorna sorguda from oncelik1 demek mi mantıklı ?

    yoksa 1500 ünüde aynı yerde tutup from genl where oncelik=1 demk mi..

    Daha dorğusu şöyle, aralarında performans kaybı olur mu ? benim amacım 10 bin kayıt olacak.Tarcan için düşünüyorum.Öncelik1,2,3,4,5 var hepsini ayırmak mı daha mantıklıydı yoksa bir tutmak mı :-/

  4. KısayolKısayol reportŞikayet pmÖzel Mesaj
    tolgasen
    tolgasen's avatar
    Kayıt Tarihi: 03/Ocak/2009
    Erkek
    hocam ne kadar küçük o kadar performans 500 500 500 varken 1500 diğerine göre daha performanssızdır

    ¯\(ツ)/¯ ฏ๎๎๎๎๎๎๎๎๎๎๎๎๎๎๎๎
  5. KısayolKısayol reportŞikayet pmÖzel Mesaj
    FCN
    FCN's avatar
    Kayıt Tarihi: 28/Eylül/2007
    Erkek

    veritabanın performansını arttırmak için nekadar küçük parçalara bölebiliyorsa bölcek altın kurallardan biri budur

     

     


    Follow me : http://twitter.com/TheFCN
  6. KısayolKısayol reportŞikayet pmÖzel Mesaj
    DarkF4Te
    DarkF4Te's avatar
    Kayıt Tarihi: 02/Mart/2008
    Erkek

    vallahi dene derim abi en güzeli tecrubeyle öğrenmek ama en kayıt daha hızlı oluyor ben böyle biliyorum en azından.

     Bir işte 1milyon kayıtlı bir tablo yüzünden rezil olmuştum tabi o zaman dahada bi haberdim olaylardan tablo indexsizdi.
    sorgularına göre doğru indexlenmiş tablolar da hız daha da iyi olabillir konuyla alakalı değil gerçi bu ama ben buna benzer bir yazı okumak isterdim rezil olmadan önce :P

    2 veritabanı olusturursun  daha sonra birinde tek tablo diğerinde 3 tablo olacak şekilde yaparsın.
    birinci veritabanında içerik diye bir  tablo açıp yapısıda id  keyword oncelik şeklinde yaparız öncelik indexli olursa daha tatlı olur.


     for($i=0;$i<30000){

    mysql_query("insert into icerik values('','" .rand(10000,90000). "','" .rand(1,3). "'); ");

     }

    >

    bununla içini doldurursun abi

    tablo ikide de oncelik1 oncelik2 oncelik3 diye 3 tablo oluşturup hepsinin yapısınıd id  keyword olarak yapalım

     

     


     for($i=0;$i<10000){

    mysql_query("insert into oncelik1 values('','" .rand(10000,90000). "'); ");

     

     for($i=0;$i<10000){

    mysql_query("insert into oncelik2 values('','" .rand(10000,90000). "'); ");

     }

     

     for($i=0;$i<10000){

    mysql_query("insert into oncelik3 values('','" .rand(10000,90000). "'); ");

     }

     

    >

     bununlada burdaki tablolrı doldurur kayıt sayısı eştir mantıkta yaptığı işlerde eştir.

    benim ön yargım 2. yöntemde daha hızlı sonuçlar alacağın olur. sebepleri ise

    ilk olarak ekstra bir indexleme yapman gerekmez oncelik icin bu fiziksel boyutu düşürür.

    yine dediğim gibi tablo içindeki kayıt sayısı az olduğu içinde daha hızlı sonuçlar gelecektir.


    çok uzun sürmez bence denemek boş vaktinde bi incele derim abi ^^

     

    dilim döndüğünce açıklamaya çalıştım kolay gelsin 

    not:yazıyı komple inceleyemedim klavyemin bagzı tuşları basmıyor dengesizlik varsa affedin.

  7. KısayolKısayol reportŞikayet pmÖzel Mesaj
    renegadealien
    renegadealien's avatar
    Üstün Hizmet Madalyası Savaş Madalyası Başarı Madalyası Üstün Hizmet Madalyası Developer Madalyası
    Kayıt Tarihi: 23/Mart/2003
    Erkek
    Hangi sorgu sonucun bir sonraki sorguya daha az kayıt bırakıyorsa, o önce kullanılmalıdır... Bu sayede her seferinde daha az kayıt seçerek eleme yaparsın...

    Sanıyorum kendi atasözümü yaptım, kaynak belirterek kullanabilirsiniz. 10.05.2013 tarihli google arama sonucu : Aradığınız - "herşeyin hayırlısı rampanın bayırlısı" - ile ilgili hiçbir arama sonucu mevcut değil. Not : Söyleyeni belli olduğu için(Ben) atasözü değil, özlüsöz oluyormuş, dolayısı ile kendi özlüsözümü yapmış oldum :)
  8. KısayolKısayol reportŞikayet pmÖzel Mesaj
    Abizittin
    Abizittin's avatar
    Kayıt Tarihi: 19/Haziran/2008
    Erkek

    zumsuk bunu yazdı:
    -----------------------------

    :D gelecek gelcek.Önce mysqlun falan çalışma mantığını çözmeme lazım

    ve maalesef googleda arıyorum hala adam gibi Türkçe döküman bulamadım :-/

    edit: 

    bu arada demek istediğm kesinlikle o mesela oncelik1,2,3 olsun

    500-500-500 bölmek daha sorna sorguda from oncelik1 demek mi mantıklı ?

    yoksa 1500 ünüde aynı yerde tutup from genl where oncelik=1 demk mi..

    Daha dorğusu şöyle, aralarında performans kaybı olur mu ? benim amacım 10 bin kayıt olacak.Tarcan için düşünüyorum.Öncelik1,2,3,4,5 var hepsini ayırmak mı daha mantıklıydı yoksa bir tutmak mı :-/


    -----------------------------

    hoca oncelik1 tablosunda sadece öncelik durumunu tutmayacaksın ki

    yanında birde o kaydın idsini girmen gerekiyor.

    her kelimeye bir öncelik girdiğini varsayıyorum.

    10.000 kaydı tekrar 2 sütunlu bir tabloya kaydettiriyorsun.

    aynı şekilde oncelik1 tablosunda da 10.000 kaydın içinden sorgu yapacaksın :)

    where oncelik=1 dememek için from oncelik1 diyerek fazladan 2 sütunlu bir tablo açıyorsan

    oncelik2 , oncelik3 , oncelik4 , oncelik5 gibi bi kaç 10.000 kayıtlık tablo daha olduğunu düşünürsek :)

    bence bu konuda biraz daha düşünmek gerek :)

  9. KısayolKısayol reportŞikayet pmÖzel Mesaj
    LNAU
    LNAU's avatar
    Kayıt Tarihi: 23/Aralık/2008
    Erkek
    zumsuk bunu yazdı:
    -----------------------------

    :D gelecek gelcek.Önce mysqlun falan çalışma mantığını çözmeme lazım

    ve maalesef googleda arıyorum hala adam gibi Türkçe döküman bulamadım :-/

    edit: 

    bu arada demek istediğm kesinlikle o mesela oncelik1,2,3 olsun

    500-500-500 bölmek daha sorna sorguda from oncelik1 demek mi mantıklı ?

    yoksa 1500 ünüde aynı yerde tutup from genl where oncelik=1 demk mi..

    Daha dorğusu şöyle, aralarında performans kaybı olur mu ? benim amacım 10 bin kayıt olacak.Tarcan için düşünüyorum.Öncelik1,2,3,4,5 var hepsini ayırmak mı daha mantıklıydı yoksa bir tutmak mı :-/


    -----------------------------
    Hacı sen  bana 10  15  dakkalık  ders versene yahu :))

    Bende veritabanı oluşturmayı yenı becerebılenlerdenım şimdi  merak etıgım  ve yapmaya çaliştiğim şu:

    Ben db oluşturuyorum oluşturduktan sonra gereklı dosyaları uplıyorum ftpye  ondan sonra sql yuklemeye çalışıyorum fakat hep  yalan  yanlış  yerlere giriyorum ıkı dakkada  bana bırgun bunu ızah edebılırmısın hacı :))


    Yakında Güncelenecektır...
  10. KısayolKısayol reportŞikayet pmÖzel Mesaj
    DarkF4Te
    DarkF4Te's avatar
    Kayıt Tarihi: 02/Mart/2008
    Erkek
    Abizittin bunu yazdı:
    -----------------------------
    zumsuk bunu yazdı:
    -----------------------------

    -----------------------------

     

    hoca oncelik1 tablosunda sadece öncelik durumunu tutmayacaksın ki

    yanında birde o kaydın idsini girmen gerekiyor.

    her kelimeye bir öncelik girdiğini varsayıyorum.

    10.000 kaydı tekrar 2 sütunlu bir tabloya kaydettiriyorsun.

    aynı şekilde oncelik1 tablosunda da 10.000 kaydın içinden sorgu yapacaksın :)

    where oncelik=1 dememek için from oncelik1 diyerek fazladan 2 sütunlu bir tablo açıyorsan

    oncelik2 , oncelik3 , oncelik4 , oncelik5 gibi bi kaç 10.000 kayıtlık tablo daha olduğunu düşünürsek :)

    bence bu konuda biraz daha düşünmek gerek :)


    -----------------------------

     

     hocam her durumda 10 tablonun içine aldıgımız 10.000 kayıtın tek tabloda olmasındansa bu bölmek iyidir ama başından da dediğim gibi kullanıldığı yere bağlı olarak tercihler değişebilir tabi.

    10x10.000 birmilyon kayıtlı tek bir tablo ile hangi tabloda arama yapacağını bilen ve ona göre tablosunu seçen onbin kayıtlı bir tabloda arama yapan bir sorgu daha hızlıdır.

  11. KısayolKısayol reportŞikayet pmÖzel Mesaj
    Ayro
    Ayro's avatar
    Kayıt Tarihi: 08/Ağustos/2005
    Erkek

    :D

    where oncelik=1 deyince mysql oncelik 1 haricindekileri iplemiyor işleme katmıyor galba ? bu yüzden sql sorgusuna bir problem olmaya bilir mi acep ?

Toplam Hit: 1516 Toplam Mesaj: 16