Bilmek istediğin her şeye ulaş

Ramazan Esen,

Bilgisayar Programcısı

Hayallerinin peşinden koşabildiğin ölçüde başarılı olursun.

Kasım 2013

Ramazan Esen

MySQL Performansı için 101 Öneri

- bütün innodb dosyanızı memoryde tutacak kadar raminiz olsun. İnnodb dosya memoryden ulaşıldığında diskten ulaşılmasına göre çok daha hızlı olacaktır
- swap'ten ne olursa olsun kaçının. Swapping diskten okuma demektir ve yavaştır
- pil destekli ram kullanın ( non volatile ram olarak geçiyorlar)
- gelişmiş raid sistemi ullanın. Tercihen raid 10 ve üstü
- raid5 ten kaçının checksum integrity kontrolü pahalı bir işlemdir.
- os ve data partitionlarını ayırın. Sadece logical olarak değil fiziksel olarak da ayırın. Os yazma işlemleri database performansınızı düşürür
- mysql temp alanını ve replication loglarını datanızdan ayrı bir partitionda tutun. Arkaplan yazmaları database performansınızı etkileyebilir.
- ne kadar fazla disk o kadar fazla performans demektir
- sas ı sata'ya tercih edin
- ufak diskler büyük disklere göre daha hızlıdır. Özellikle raid configlerinde
- pil destekli cache raid controller kullanın
- software raidlerden uzak durun
- data partition için solid state io kart kullanmayı düşünün. Bu kartlar 2gb/s yazmaya kadar dayanırlar.
- linux sistemlerde swappiness değerini 0a ayarlayın. Cache file ları database serverında tutmanın bir nedeni yoktur bu iş daha çok web server veya desktop sistemler için uygundur
- filesystem mount ederken eğer var ise noatime ve nodirtime ile mount edin. Erişim için database file modification zamanını tutmanın bir nedeni yoktur.
- xfs file system kullanın. Ext3ten daha hızlı ve daha ufak bir filesystemdir ve daha fazla opsiyon barındırır.
- xfs filesystem logunu ve buffer variable larını maksimum performans için ayarlayın.
- linux sistemlerde noop ve dieadline io scheduler kullanın. Cfq ve anticipatory scheduler bu ikisine göre daha yavaştır.
- 64 bit os kullanın. Daha fazla memory adresini mysql kullanabilir
- kullanılmayan paketleri ve daemonları sistemizden silin
- host ve mysql host larını hosts dosyası içinde tutun. Dns lookuplardan kurtulmuş olursunuz.
- asla bir mysql processini force kill etmeyin bu databasei bozabilir veya çalışan backup işlemlerini bozabilir.
- sunucuyu tamamen mysql için kullanın. Background processler cpu ve memory'den çalarlar
mysql configuration
- innodb_flush_method=O_DIRECT yazarken double buffer yapmayı engeller
- ext3 systemlerde O_DIRECT'ten kaçının
- innodb_buffer_pool_size bütün innodb file alabilecek kadar ayarlayın
- innodb_log_file_size ı çok büyük tutmayın.
- innodb_thread_concurrency ve thread_concurrency değişkenlerini karıştırmayın. Bu iki değişken uyumlu değildir (?)
- max_connections değişkenini olabildiğince minimal tutmaya çalışın. Fazla değerler ram kullanımını artırır ve mysqli kitlemeye neden olabilir
- thread_cache olabildiğince yüksek bir rakamda tutmaya çalışın, 16 civarı bir rakam gibi, bağlantı açarkenki yavaşlığı engeller.
- skip-name-resolve kullanımı dns lookupları azaltacaktır.
- eğer queryleriniz sıklıkla tekrar eden cinsten ise ve sonuçları sıkça değişmiyorsa query cache kullanın
- disk yazmayı engellemek için temp_table_size değerini artırın
- disk yazmayı engellemek için hax_heap_table_size değerini artırın
- sort_buffer_size değerini çok yüksek tutmayın. Bu değer açılan bağlantı başına değerdir ve rami hızlıca yiyebilir.
- key_read_requests değerini monitor edin ve böylece key_buffer_size değerini belirleyin. Key read requests değeri key_reads değerinden yüksek olmalıdır aksi takdirde key_buffer ı verimli bir şekilde kullanamazsınız
- innodb_flush_log_at_trx_commit = 0 olarak ayarlamak performansı artıracaktır. Defult 1 bırakırsanız data integrity güven altına almış olacaksınız ve replication işlemi laglı olmayacaktır.
- config değerlerini test edebileceğiniz bir test ortamı sağlayın böylece sıklıkla restart edip production ortamını bozmamış olursunuz.
- veritabanı yapısını olabildiğince toplu tutun
- eski dataları arşivleyin veri setinizi olabildiğince ufak tutun
- tablolarınıza index oluşturun
- index kullanımını çok fazla tutmayın, querylerinize göre optimize edin
- text ve blob data tiplerini sıkıştırın. Alan ve disk okuma sayısını azaltmış olursunuz
- utf8 ve utf16 latin1e göre daha yavaştır
- triggerları olabildiğince az sıklıkta kullanın
- tekrar eden datayı olabildiğince minimum tutun. Data duplicationı gereksiz yere yapmamaya çalışın
- row genişletme yerine tablo linklemeyi kullanın
- data tiplerine dikkat gösterin olabildiğince minimum yer kaplayan data tipini seçmeye çalışın
- blob ve text datayı queryde fazla kullanılmıyorsa diğer datadan ayrı tutmaya çalışın.
- check table ve optimize table olayını sıkça yapın
- innodb tabloları optimize etmek için sıklıkla rewrite edin
- bazen indexi drop edip kolonu ekledikten sonra indexi tekrar eklemek daha hızlı olabilir
- değişik ihtiyaçlar için değişik storage engineleri kullanın
- log tutulan tablolar ve rapor tabloları için archive storage engine kullanın
- session datayı mysql yerine memcache de tutmaya çalışın.
- değişken uzunluktaki stringler için char yerine varchar kullanın
- tablo şema değişiklerini olabildiğince adım adım yapmaya çalışın
- şema değişiklerini öncelikle test ortamında gerçekleştirin. Bu test ortamı productionın birebir kopyası olmasına özen gösterin
- config dosyanızdaki değerleri gelişigüzel bir biçimde değiştirip denemeyin
- bazen değerlerden az olanı mysql için daha iyi olabilir
- şüphede kaldığınız zaman generic bir mysql config dosyası kullanın
- slow query logu yavaş çalışan queryleriniz için mutlaka kullanın
- sorgularınız düzgün bir biçimde fonksiyonunu yerine getiriyor mu diye explain keywordunu kullanın
- querylerini sıklıkla test edin. Optimal çalışıp çalışmadıklarını kontrol edin. Zaman geçtikçe performans değişimleri olabilir.
- count(*) dan kaçının, tüm tabloyu lock edebilir
- querylerinizi olabildiğince tek tip tutmaya çalışın, böylece benzer queryler query cache kullanabilirler
- uygun olan durumlarda group by kullanmayı distinct e tercih edin
- where, group by, order by geçen kolonlara index atın
- bir kolonu birden fazla indexde kullanmamaya çalışın
- bazen mysql yanlış index kullanabilir use index keywordunu bu durumlarda kullanın
- SQL_MODE=STRICT için herhangi bir sorun var mı kontrol edin
- UNION kullanırken 5ten az indexli alanlarda OR yerine LIMIT kullanın
- önce select yapıp daha sonra varsa update etmek yerine INSERT ON DUPLICATE KEY veya INSERT IGNORE kullanın
- MAX yerine indexlenmiş bir alan kullanın ve ORDER BY kullanın
- ORDER BY RAND() kullanımından kaçının
- LIMIT M, N bazen queryleri yavaşlatabilir, az kullanmaya çalışın
- WHERE içinde subquery yerine UNION kullanın
- UPDATE için exclusive lock engellemek için SHARE MODE kullanın
- MYSQL server restart ettiğinde database warm etmesini bekleyin, böylece tüm data memory'ye yüklenmiş olur ve queryler hızlıca yanıt verir.
- DROP TABLE ve ardına CREATE TABLE kullanın DELETE FROM ile tüm veriyi silecekseniz.
- queryde select ettiğiniz veri alanı sayısını olabildiğince az tutun SELECT * dan kaçının
- multiple connections kullanmak yerine persistent connections kullanmak bazen daha az pahalı bir işlem olabilir.
- querylerinizi server üzerinde yük varken de benchmarktan geçirin. Bazen basit queryler diğer queryleri de etkileyebilirler.
- yük arttığı zaman SHOW PROCESSLIST ile yavaş ve problemli queryleri izleyin
- tüm şüphe duyduğunuz queryleri development ortamında test edin.
- backuplarınızı ikincil replika sunucudan alın
- backup sırasında replication işlemini durdurun.
- bütün mysql sunucularını durdurup database dosyalarının backuplarını alın
- eğer mysql dump kullanılıyorsa binary log dosyalarının da backupını aynı zamanda alın. Böylece replication işleminin bozulmadığından emin olun
- backup işlemi için LVM snapshotlarına güvenmeyin.
- dump dosyalarınızı tablo yedekleme ve kurtarma için tablo bazında almaya çalışın.
- mysqldump kullanırken --opt kulanın
- backup almadan önce check table optimize table komutlarını kullanın.
- yedek import ederken foreign constraints etkisiz bırakarak daha hızlı import alabilirsiniz
- aynı şekilde unique checks etkisiz bırakarak da daha hızlı import alabilirsiniz.
- her bir backupdan sonra database boyutu ve tablo boyutlarını inceleyerek büyümeyi gözlemleyin
- slave replication errorları bir cron script yazarak gözlemleyin
- düzenli bir şekilde database backupı alın
- backuplarınızı düzenli bir şekilde test edin


anasayfa:
monitis.com/application-monitoring/datab. . .
Tercüme Eden: Baran Sakallıoğlu
Eylül 2013

Ramazan Esen

Borca Batık Şirketlerde Bir Kurtuluş Yolu İflas Erteleme!

İflas Nedir?
Kanunlarımızda iflas, “tacir ya da tacir statüsündeki bir borçlununborç mükellefiyetini artık ifa edememesi (borcunu ödeyememesi) halidir” şeklinde tanımlanmıştır.
Sözlük karşılığı ise;
1. Borçlarını ödeyemediği mahkeme kararıyla saptanan ve ilan olunan tüccarın durumu 2. yenilgiye uğrama, değerini yitirmedir.
Bir borç mükellefiyetinin, borçlu tarafından rıza ile ödenmemesi halinde, devletin zor kullanma yollarından biri olaniflas, cebri icranın bir çeşididir.
İflas halinde borçlunun bütün mal varlığına el konulur. Mal varlığının hepsinin, borçların tamamına karşılık gösterilmesi söz konusudur. Ayrıca, kısmi icradan farklı olarak iflas ancak tacirler için uygulanır. Bir başka ifadeyle ancak tacirler, müflis duruma düşebilir.
İflas kararını, müflisin veya alacaklıların talebi üzerine ticaret mahkemesi verir. Müflisin haczedilebilen bütün mal ve haklarından bir “iflas masası” teşkil edilir. İflas masasına giren bütün mallar iflas idaresince tasfiye edilir ve alacaklıların alacakları ödenir. Alacaklarda tahsil bakımından bir öncelik yoktur.
İflas Erteleme Nedir?
Ülkemizde yaşanan ekonomik sıkıntılar nedeniyle şirketlerin, “iflasının ilan edilmesi” öncesinde baş vurabilecekleri hukuksal bir yoldur. İflas erteleme, mali durumu bozulan şirket ve kooperatiflerinsermayesinin korunması için gerekli tedbirlerden birisi olarak Türk Ticaret Kanunu tarafından düzenlenmiştir.
Mahkeme, şirketin mali durumunun düzeltilmesini mümkün gördüğü takdirde yönetim kurulu veya bir alacaklının talebi sonucunda iflas erteleme kararı verebiliyor.
İflas erteleme sonucunda borçlu firma normal faaliyetlerine devam edebiliyor. Kamu alacağı ve SSK primleri dahil hiçbir yasal takip yapılamıyor. Mahkeme, kayyumun verdiği raporlara göre iflas ertelemesüresini sona erdire bildiği gibi, 4 yıla kadar da uzatabiliyor veya firmanın iflasına karar verebiliyor.
Kimler İflas Ertelemeden Yararlanabilir?
1-Sermaye şirketleri (anonim ve limited şirketler)
2-Kooperatifler
Gerçek kişi tacirler ve şahıs şirketleri( kollektif ve komandit şirketler) ise iflas erteleme talep edemezler.
İflas Ertelemenin Şartları Nedir?
  1. Şirket yönetim kurulu, tasfiye memurları veya şirket alacaklılarından birinin mahkemeye başvurupşirketin borçlarının aktifinden daha fazla olduğunu ileri sürmesi ve mahkemece bu hususun tespit edilmesi gerekir. Ancak bu noktada erteleme talebi yoksa iflas kararı verilir.
  2. Şirket mali durumu hakkında iyileştirme projesi sunularak yönetim kurulu veya alacaklılardan birininiflasın ertelenmesi talebinde bulunması gerekir. Bu talep, ancak şirket veya kooperatifin borca batıklığının mahkemece incelenmesi sırasında yapılabilir.
  3. Mahkemeye sunulacak iyileştirme projesine göre, şirket veya kooperatifin mali durumunun düzelmesinin mümkün görülmesi, yani iyileştirme projesinin mahkemece ciddi ve inandırıcı bulunması gerekir.
Türk Ticaret kanunumuzun 377. maddesinde iflas erteleme şu şekilde tanımlanmıştır:
Yönetim kurulu veya herhangi bir alacaklı yeni nakit sermaye konulması dahil nesnel ve gerçek kaynakları ve önlemleri gösteren bir iyileştirme projesini mahkemeye sunarak iflasın ertelenmesini isteyebilir. Bu haldeİcra ve İflas Kanununun 179 ilâ 179/b maddeleri uygulanır.
Sermaye Şirketleri ile Kooperatiflerin İflâsı
Sermaye şirketleri ile kooperatiflerin borçlarının aktifinden fazla olduğu idare ve temsil ile vazifelendirilmiş kimseler veya şirket ya da kooperatif tasfiye halinde ise tasfiye memurları veya bir alacaklı tarafından beyan ve mahkemece tespit edilirse, önceden takibe hacet kalmaksızın bunların iflasına karar verilir. Şu kadar ki, idare ve temsil ile vazifelendirilmiş kimseler ya da alacaklılardan biri, şirket veya kooperatifin mali durumunun iyileştirilmesinin mümkün olduğuna dair bir iyileştirme projesini mahkemeye sunarak iflasın ertelenmesini isteyebilir. Mahkeme projeyi ciddi ve inandırıcı bulursa, iflâsın ertelenmesine karar verir.İyileştirme projesinin ciddi ve inandırıcı olduğunu gösteren bilgi ve belgelerin de mahkemeye sunulması zorunludur. Mahkeme, gerekli görürse idare ve temsille vazifelendirilmiş kimseleri ve alacaklıları dinleyebilir.İflasın ertelenmesi talepleri öncelikle ve ivedilikle sonuçlandırılır.
İflas Ertelemenin süreçleri;
  1. Mahkeme, iflasın ertelenmesi isteminde bulunulması üzerine, envanter düzenlenmesi ve yönetim kurulunun yerine geçmesi ya da yönetim kurulu kararlarını onaylanması için derhal bir kayyım atar; ayrıca şirketin ve kooperatifin mal varlığının korunması için gerekli diğer önlemleri alır.
  2. Kayyımın atanmasına ilişkin karar, kayyımın mahkemece belirlenmiş görevleri ve temsil yetkisi ile bunların sınırları ve iflasın ertelenmesine ilişkin talep mahkeme tarafından ilan ve ticaret siciline tescil ettirilir. Mahkeme bu arada erteleme talebini karara bağlar.
  3. İflas ertelenmişse kayyım her üç ayda bir şirketin projeye uygun olarak iyileştirme gösterip göstermediğini mahkemeye rapor eder, mahkeme bu rapor üzerine veya gerek gördüğünde alacağıbilirkişi raporuna göre, erteleme istemini değerlendirir ve iyileştirmenin mümkün olamayacağı kanaatine varırsa erteleme kararını kaldırır.
İflas Erteleme kararının Şirkete Faydaları Nelerdir?
  1. Erteleme kararı üzerine borçlu aleyhine 6183 sayılı Kanuna göre yapılan takipler de dahil olmak üzere hiçbir takip yapılamaz ve evvelce başlamış takipler durur.
  2. Bir takip muamelesi ile kesilebilen zaman aşımı ve hak düşüren müddetler işlemez.
  3. Erteleme sırasında taşınır, taşınmaz veya ticari işletme rehniyle temin edilmiş alacaklar nedeniyle rehnin paraya çevrilmesi yoluyla takip başlatılabilir veya başlamış olan takiplere devam edilebilir. Ancak bu takip nedeniyle muhafaza tedbirleri alınamaz ve rehinli malın satışı gerçekleştirilemez. Bu durumdaerteleme süresince işleyecek olup mevcut rehinle karşılanamayacak faizler teminatlandırılmak zorundadır.
  4. Erteleme süresi azami bir yıldır. Bu süre kayyımın verdiği raporlar dikkate alınarak mahkemece uygun görülecek süreler ile uzatılabilir. Ancak uzatma süreleri toplamı 4 yılı geçemez.
  5. Kayyım, mahkemenin belirleyeceği sürelerde iflâsı ertelenenin faaliyetleri ve işletmenin durumu konusunda düzenli olarak mahkemeye rapor verir.
  6. İflasın ertelenmesi talebinin reddi ya da erteleme süresi sonunda iyileşmenin mümkün olmadığının tespiti üzerine mahkeme, şirketin veya kooperatifin iflasına karar verir. Erteleme süresi dolmamakla birlikte, mahkeme kayyımın verdiği raporlardan şirketin veya kooperatifin mali durumunun iyileştirilmesinin mümkün olmadığı kanaatine varırsa, erteleme kararını kaldırarak şirketin veya kooperatifin iflasına karar verebilir.