sonuç itibariyle bir işlem yapılacak ve bunu nasıl yaparsan yap bir yük bindirecek. Eğer performans senin için çok nemliyse güncel verileri nosql veritabanlarından birinde tutup arşiv olan daha eskileri ilişkisel bir veritabanında tut. mysql sorgusu yerine stored prosedure kullanırsan if kullanabilirsin Mühendis kahveyi projeye dnüştüren bir insan evladıdır.

pesimistzombie bunu yazdı http://mysql.rjweb. org/doc. php/deletebig bu makaleyi dikkatlice okumalısın. Her türlü zınk diye silme veya update işlemi yapamazsın anca durumu iyileştirebilir ve farklı komutlar kullanabilirsin. peki sorgu içine if gibi bi komut verebiliyomuyuz? ayrıyetten buradaki komut sanırım cron veriyor sorguya 30 günde bir yap gibi vs vs inceledim kodları ancak bu da mysql üstüne yük bindirmez mi? Yani yine cron veririm ancak şyle bir şey lazım bana sorguda silinmeyen gnderileri de gstermemesi lazım if eklemem lazım sorguya Real Eyes Realize Real Lies

Bence mysql'in gücünü hafife alıyorsun. 1 dakikada kaç tane sql işlemi yapılır. Eski pentium tipi işlemci üzerinde çalışmıyorsan sıkıntı yok. Optimize kod yazdıktan sonra, düzgün şekilde tasarlanmış hiç bir veritabanı seni üzmez. Fakat tam tersi ufacık iş yaptığın ktü dizayn edilmiş bir veritabanı adamı süründürür. Arkadaşların da dediği gibi ufak bir boolean blüm ekleyip 0/1 gsterilsin gsterilmesin şekilde belirtip bunları belirli saatlerde mesela sabahın 5-6'sında otomatik çalışacak hale getir. Peki diyelim günde benzer 3-5 grup silmek istedi. Hepsinin verisi birikince hepsine bir anda işlem yapınca yine avantajlı olmayacak ki? Bu sefer ne yapacaksın mesela mesajlara süre kısıtlaması olabilir. Zaman damgası koyar mesela silinmesi istenen 24 saat dolan mesajları veritabanından silersin. Hem de kullanıcıya mesajlarını geri alma imkanı da verilebilir. Ekstradan ciddi bir iş yapıyorsan ve bunlar kullanıcı girdileriyse yasal olarak bazı verileri belirli bir süre tutma sorumluluğun olduğunu unutma. Başka bir yerde bu silinmesi onaylanan verileri tutabilir, işlem yaptığın sistemden düşürebilirsin.

Hocam valla sunulan yntemler en güzel yntemler zaten yok veritabanı da sıkıntı olur diyorsan sana uç noktadan bir senaryo çizeyim Grup gsterimleri yapılırken gsterim yapılan grubun id veya adı gibi belirleyici bir şeyin olduğu session var mı diye kontrol edersin yoksa listeleme yapılır eğer varsa grup mesaj id sini yapılacak işlemler tablosunda silinecek diye eklenir sin doğal olarak basit bir if else ve tk kayıt işlemi gerçekleşir veriyisilmeyi de cron lar sin İftara az kaldı sacmaladim ise mazaretimden dolayi hoş grün Hocam dedikleri yntemler güzel de ben çekimi yaparken twitter tarzı sayfalama yapıyorum ya sql içine if gibi bişi yazmam lazım grubu kontrol etmesi için yada daha farklı bi yntem eyvallah yinede Real Eyes Realize Real Lies

Selam müritler, şimdi 2.000 gnderili bir grup var diyelim, bu grubun silindiğini düşünelim feysbuk gibi. bu 2000+Grup Bilgilerinin olduğu verilerin silme işlemi yaklaşık 1dk falan olur diye düşünüyorum 100+ aktif kullanıcı olduğunda. Şimdi bu verilerin silme işlemini nasıl hızlandırabilirim? Var mıdır yolu yordamı? Real Eyes Realize Real Lies

durum diye bir parametre belirlersin grubun durumunu aktiften pasife çekersin bylelikle kullanıcılar erişemez ama mysql'de kalır. Belli aralıklarla otomatik olarak temizlersin Mühendis kahveyi projeye dnüştüren bir insan evladıdır.

İşte burada veritabanı tasarımı ortaya çıkıyor. Diyelim bir başlığa 2000 mesaj geldi. Bunda her satıra başlık id'si girmektense ekstradan bir başlıklar blümü açıp unique bir id vermek ve daha sonra mesajları belirtmek için o id adresini mesajlarında kullanmak yararlı olabilir. Diyelim başlık kilitlenecek ya da mesajları gsterilmeyecek. Başlıklar blümündeki id'yi iptal edip sayfana başlıkları çekerken sadece başlıklar blümündeki id'yi kontrol ettirirsen atlanan id'ye ait hiç bir mesaj çekilmez. Yani 2000 mesaj yerine tek bir satıra işlem yaparsın. Veri filtreleme esnasında bu veriler çekilmez. Tabi şimdi misal olması için byle dedim. Oturup akıllıca tasarlansa daha mantıklı bir yolu bulunabilir. Çok uzun süredir veritabanı tasarımı yapmadım. Ama biraz kafa yordun mu daime daha akıllıca bir yntem ortaya çıkıyordu.

gosterimden kaldirip cronlarla sunucunun daha az yogun oldugu saatlerde tetikleyip silersin..

Bu tarz durumlarda lazy deletion yapılabilir. Silindi olarak işaretlersin, bakım günlerinde fiziksel olarak silersin. Veritabanı için 2000 satır silmek de büyük iş değil onuda syleyeyim.

http://mysql.rjweb. org/doc. php/deletebig bu makaleyi dikkatlice okumalısın. Her türlü zınk diye silme veya update işlemi yapamazsın anca durumu iyileştirebilir ve farklı komutlar kullanabilirsin. peki sorgu içine if gibi bi komut verebiliyomuyuz? Real Eyes Realize Real Lies

http://mysql.rjweb. org/doc. php/deletebig bu makaleyi dikkatlice okumalısın. Her türlü zınk diye silme veya update işlemi yapamazsın anca durumu iyileştirebilir ve farklı komutlar kullanabilirsin. :|

Şimdi relational database de tablo mantığını şyle kurarsan bir sorun kalmaz. Gruplar diye bir tablon olur ayrıca bununla ilişkili grup_postları gibi ayrı bir tablon olur. Sen gidip gruplar dan grubu sildiğin, parent id yok olacağı için, grup silinmiş olur. postlar için ayrıca bir zamanlayıcı oluşturup kaldırabilirsin ama bu davranış kullanıcıyı bağlamaz. Edit : İkinci soruna istinaden; Şimdi gruplar tablon şyle olur : Grup Adı - Grup Zımbırtısı - Grup Pıtırcıkları - State Gruplar postun da şyle : Grup Id - Post Sen adamın ekranında paylaşırken, ekranında grup adını da yazacağın için; mecburen gruplar tablosuyla join etmen gerekir. Fakat join ederken grupların state' ini kontrol edersen, "aaa aaa o da bu silinmiş" diyip onu sana getirmez. Ufak sorgu : SELECT FROM groups AS g INNER JOIN group_posts AS gp ON gp. gid = g. id WHERE g. state <> deleted ozgunlu tarafından 27/Haz/16 05:18 tarihinde düzenlenmiştir Hello, i am nothing. I come from Neverland.

İşte burada veritabanı tasarımı ortaya çıkıyor. Diyelim bir başlığa 2000 mesaj geldi. Bunda her satıra başlık id'si girmektense ekstradan bir başlıklar blümü açıp unique bir id vermek ve daha sonra mesajları belirtmek için o id adresini mesajlarında kullanmak yararlı olabilir. Diyelim başlık kilitlenecek ya da mesajları gsterilmeyecek. Başlıklar blümündeki id'yi iptal edip sayfana başlıkları çekerken sadece başlıklar blümündeki id'yi kontrol ettirirsen atlanan id'ye ait hiç bir mesaj çekilmez. Yani 2000 mesaj yerine tek bir satıra işlem yaparsın. Veri filtreleme esnasında bu veriler çekilmez. Tabi şimdi misal olması için byle dedim. Oturup akıllıca tasarlansa daha mantıklı bir yolu bulunabilir. Çok uzun süredir veritabanı tasarımı yapmadım. Ama biraz kafa yordun mu daime daha akıllıca bir yntem ortaya çıkıyordu. Peki grup bilgisinde kilitlendi diyelim yada silindi diyelim, bu grubun postları grünmeyecek ancak benim yine if ile sql içinde kontrol edebilmem lazım yoksa daha fazla gr e basmadna cne bana gelen 1. sayfada ilk 7 post silinen gruptan geldiyse boş gzükecek yani o kilitlenmiş grubun postlarını çekmemem gerekiyor. Real Eyes Realize Real Lies

Hocam valla sunulan yntemler en güzel yntemler zaten yok veritabanı da sıkıntı olur diyorsan sana uç noktadan bir senaryo çizeyim Grup gsterimleri yapılırken gsterim yapılan grubun id veya adı gibi belirleyici bir şeyin olduğu session var mı diye kontrol edersin yoksa listeleme yapılır eğer varsa grup mesaj id sini yapılacak işlemler tablosunda silinecek diye eklenir sin doğal olarak basit bir if else ve tk kayıt işlemi gerçekleşir veriyisilmeyi de cron lar sin İftara az kaldı sacmaladim ise mazaretimden dolayi hoş grün nceleri Kızlar Utanınca Kızarırdı Şimdilerde Kızarınca Utanıyorlar..

Bence mysql'in gücünü hafife alıyorsun. 1 dakikada kaç tane sql işlemi yapılır. Eski pentium tipi işlemci üzerinde çalışmıyorsan sıkıntı yok. Optimize kod yazdıktan sonra, düzgün şekilde tasarlanmış hiç bir veritabanı seni üzmez. Fakat tam tersi ufacık iş yaptığın ktü dizayn edilmiş bir veritabanı adamı süründürür. Arkadaşların da dediği gibi ufak bir boolean blüm ekleyip 0/1 gsterilsin gsterilmesin şekilde belirtip bunları belirli saatlerde mesela sabahın 5-6'sında otomatik çalışacak hale getir. Peki diyelim günde benzer 3-5 grup silmek istedi. Hepsinin verisi birikince hepsine bir anda işlem yapınca yine avantajlı olmayacak ki? Bu sefer ne yapacaksın mesela mesajlara süre kısıtlaması olabilir. Zaman damgası koyar mesela silinmesi istenen 24 saat dolan mesajları veritabanından silersin. Hem de kullanıcıya mesajlarını geri alma imkanı da verilebilir. Ekstradan ciddi bir iş yapıyorsan ve bunlar kullanıcı girdileriyse yasal olarak bazı verileri belirli bir süre tutma sorumluluğun olduğunu unutma. Başka bir yerde bu silinmesi onaylanan verileri tutabilir, işlem yaptığın sistemden düşürebilirsin. Hocam peki UPDATE ile 2k gnderi hatta 4-5 grup aynı anda sişlme işlemi verdi diyelim 10k gnderiyi update set ile kilit booleanını 1 verdirsek yine uzun sürmeyecekmidir. Real Eyes Realize Real Lies

sonuç itibariyle bir işlem yapılacak ve bunu nasıl yaparsan yap bir yük bindirecek. Eğer performans senin için çok nemliyse güncel verileri nosql veritabanlarından birinde tutup arşiv olan daha eskileri ilişkisel bir veritabanında tut. mysql sorgusu yerine stored prosedure kullanırsan if kullanabilirsin iften kastım şyle bir şey aynı sorgu içinde grup tablosunda posttan gelen post_grup taki grup id sini karşılaştıracak zaten grup silindiği için bana yok verisini dndürmesi laızm bunu yapamaz mıyız normal mysql de Real Eyes Realize Real Lies

eskiden seditio cms için yazılmış bir eklenti vardı bunun mantığı işine yarayabilir Mesaj Sayısı: ".$row .""; if ($row >0) else $plugin_body.= "Not:- Silinen mesajları geri getiremezsiniz.- Silinecek mesaj, konu ilk mesajı olsa dahi ve o konuya ait başkalarının mesajı var ise konu silindiği için o konuya ait diğer kullanıcıların mesajları veritabanında kalır fakat forum sayfalarında bulunmayacaktır.";}else break; case 'sil';sed_check_xp ;$id = sed_import ;$plugin_body.= " Hızlı Mesaj Silici ";$plugin_body.= " Adım 3/3 ";$sql = sed_sql_query ;$say = sed_sql_affectedrows ;$sql = sed_sql_query ; $sql = sed_sql_query ;$say2 = sed_sql_affectedrows ;$sql = sed_sql_query ;while ($row = sed_sql_fetcharray $plugin_body.= "Kullanıcıya ait $say mesaj ve $say2 konu silinmiştir.";$plugin_body.= "İŞLEM BAŞARIYLA TAMAMLANDI.";break; default:$plugin_body.= " Hızlı Mesaj Silici ";$plugin_body.= " Adım 1/3 ";$plugin_body.= "Mesajlarını sileceğiniz üye adını giriniz:";$plugin_body.= " < =""admin. php?m=tools&p=hizlimesajsilici&a=kontrol&". sed_xg.""" method=""post"">"; $plugin_body.= "< class=""text"" maxlength=""24"" name=""user"" size=""16"" =""text"" value=""".$user.""" /> ";$plugin_body.= "< class=""submit"" =""submit"" value=""Kontrol"" /> ";break;} ?> İnceledim hocam mantık olarak çok güzel aslında ama bne zaten grubun oluşumunu siliyorum bu olay da sanırım oranın post countunu siliyor vesaire denetleyiciler ile de kontrol ediliyor benim için sorun kullancıının anasayfasında postun gzükmemesini sağlamak Real Eyes Realize Real Lies

Bu tarz durumlarda lazy deletion yapılabilir. Silindi olarak işaretlersin, bakım günlerinde fiziksel olarak silersin. Veritabanı için 2000 satır silmek de büyük iş değil onuda syleyeyim. 2000 den fazla olabilir, ancak şimdi diğer arkadaşların dediği gibi durum olayını eklersem ki var zaten yine 2000 verinin durumunu güncellemek zaman alacaktır yada daha fazla verinin. Bu yüzden alternatif yollar düşünüyorum. Gsterim için while kullanıyorum dolayısıyla continue; kullanabilirim ancak misal twitter tarzı sayfalama da ilk gelen sayfa eğer ful grup gnderisiyle dolarsa ve continue; işlerse o grup silinmişse mecburen boş gelecektir sayfa Real Eyes Realize Real Lies

dediğime bakarsan yapabilirsin. Mühendis kahveyi projeye dnüştüren bir insan evladıdır.

eskiden seditio cms için yazılmış bir eklenti vardı bunun mantığı işine yarayabilir <?PHP / Seditio - Website engine Copyright Neocrome http://www.neocrome.net File=plugins/hizlimesajsilici/hizlimesajsilici. admin. php Version=110+ (120 - 121) Updated=2007-july-20 Type=Plugin Author=Dvdbil Description= Code=hizlimesajsilici Part=admin File=hizlimesajsilici. admin Hooks=tools Tags= Order=10 / if (! defined switch { case 'kontrol': sed_check_xp ; $user = sed_import('user','P','TXT',24, TRUE);$sql = sed_sql_query("SELECT user_id, user_name, user_postcount FROM $db_users WHERE user_name LIKE '". sed_sql_prep ."' LIMIT 1"); $plugin_body.= "<h2>Hızlı Mesaj Silici</h2>";$plugin_body.= "<h4>Adım 2/3</h4>";if (sed_sql_numrows !=0){$row = sed_sql_fetcharray ;$plugin_body.= "Kullanıcı adı: ". sed_build_user($row , sed_cc ;$plugin_body.= "<br />Mesaj Sayısı: <strong>".$row ."</strong>"; if ($row >0) else $plugin_body.= "<br /><br /><strong>Not:<br /><br /></strong>- Silinen mesajları geri getiremezsiniz.<br />- Silinecek mesaj, konu ilk mesajı olsa dahi ve o konuya ait başkalarının mesajı var ise konu silindiği için o konuya ait diğer kullanıcıların mesajları veritabanında kalır fakat forum sayfalarında bulunmayacaktır.";}else break; case 'sil';sed_check_xp ;$id = sed_import ;$plugin_body.= "<h2>Hızlı Mesaj Silici</h2>";$plugin_body.= "<h4>Adım 3/3</h4>";$sql = sed_sql_query ;$say = sed_sql_affectedrows ;$sql = sed_sql_query ; $sql = sed_sql_query ;$say2 = sed_sql_affectedrows ;$sql = sed_sql_query ;while ($row = sed_sql_fetcharray $plugin_body.= "Kullanıcıya ait $say mesaj ve $say2 konu silinmiştir.";$plugin_body.= "<br /><br /><font color=\"#008000\"><strong>İŞLEM BAŞARIYLA TAMAMLANDI.</strong></font>";break; default:$plugin_body.= "<h2>Hızlı Mesaj Silici</h2>";$plugin_body.= "<h4>Adım 1/3</h4>";$plugin_body.= "Mesajlarını sileceğiniz üye adını giriniz:";$plugin_body.= "<form action=\"admin. php?m=tools&p=hizlimesajsilici&a=kontrol&". sed_xg ."\" method=\"post\">"; $plugin_body.= "<input type=\"text\" class=\"text\" name=\"user\" value=\"".$user."\" size=\"16\" maxlength=\"24\" /> ";$plugin_body.= "<input type=\"submit\" class=\"submit\" value=\"Kontrol\" /></form>";break;} ?> izleyici tarafından 26/Haz/16 20:24 tarihinde düzenlenmiştir #hayat bir sifreleme algoritmasından ibaret.

Austen bunu yazdı İşte burada veritabanı tasarımı ortaya çıkıyor. Diyelim bir başlığa 2000 mesaj geldi. Bunda her satıra başlık id'si girmektense ekstradan bir başlıklar blümü açıp unique bir id vermek ve daha sonra mesajları belirtmek için o id adresini mesajlarında kullanmak yararlı olabilir. Diyelim başlık kilitlenecek ya da mesajları gsterilmeyecek. Başlıklar blümündeki id'yi iptal edip sayfana başlıkları çekerken sadece başlıklar blümündeki id'yi kontrol ettirirsen atlanan id'ye ait hiç bir mesaj çekilmez. Yani 2000 mesaj yerine tek bir satıra işlem yaparsın. Veri filtreleme esnasında bu veriler çekilmez. Tabi şimdi misal olması için byle dedim. Oturup akıllıca tasarlansa daha mantıklı bir yolu bulunabilir. Çok uzun süredir veritabanı tasarımı yapmadım. Ama biraz kafa yordun mu daime daha akıllıca bir yntem ortaya çıkıyordu. Peki grup bilgisinde kilitlendi diyelim yada silindi diyelim, bu grubun postları grünmeyecek ancak benim yine if ile sql içinde kontrol edebilmem lazım yoksa daha fazla gr e basmadna cne bana gelen 1. sayfada ilk 7 post silinen gruptan geldiyse boş gzükecek yani o kilitlenmiş grubun postlarını çekmemem gerekiyor. Hocam konu ilgimi cekti. Fakat halen daha if niye kullaniyorsun cozemedim. Yani bir boolean ile active grup mu tutup sonra o grubun profil sayfasina girildiginde eger false sa, boyle bir grup yok deyip o guruba ait icerikleri ceken query ni calistirmazsin olur biter. Bunu neden database tarafinda halletmeye calisiyorsun. Eger anasayfa veya timeline gibi bir yerde son icerikleri gosteriyorsan da join ile icerik ve grup tablosunu birlestirip active=true olanlar diye sorgulasan ne olur mesela. Boylelikle her bi icerik icin silinecek diye update yapmana gerek kalmaz. Silinmis gruplarin iceriklerini de illa silmek istiyorsan arkadaslarin da onerdigi gibi, sistemin rahat oldugu zamanlar arkaplanda silersin. echo "imzanız zel karakter içermemelidir";