Kategori arşivi: Bilgisayar

Bilgisayar ile ilgili herÅŸey..

mzbench ile performans analizleri – 3

Selamlar,

Bu yazımda kurulumunu gerçekleştirdiğimiz mzbench sunucusu üzerinden performans testlerini nasıl yapabileceğimizi anlatmaya çalışacağım.

Kurulum için küçük bir güncelleme özellikle hızlı tek sunuculuk performans kullanımları için “docker image” kullanmanızı tavsiye ederim.

mzbench için performans testleri için BDL adını verdiği farklı, oldukça da basit, bir DSL (Domain Specific Language) türevi kullanıyor. Bu türev python’a oldukça benziyor.

Özellikle bu sayfadan tüm bilgilerine built-in tüm fonksiyonlarına / açıklamalarına erişilebilir. mzbench’in Open-Source olmasından eksik bir ürün olduğunu çıkarmayın lütfen. Oldukça profesyonel ve tamam bir ürün.

Bu adres üzerinden built-in verilen tüm komutlar için örneklere ulaşabilirsiniz.

Gelelim mzbench’in en önemli özelliğine :)

https://github.com/satori-com/mzbench/blob/master/doc/workers.md#how-to-write-a-worker

mzbench için kullanıcıyı mimic ettiği her bir öğeye “worker” adını veriyor. Bu worker’lar Erlang’ın worker’ları ile birebir aynı. Bu worker’ların belirli bir kriter ile istenildiği gibi yazılması mümkün. Yazılması da çok kolay. Erlang ve Python kullanarak yazılabiliyor ama tavsiyem Erlang’da yazılması.

Not: OTP21 ile beraber çalışan release henüz yayınlanmadı, bu nedenle OTP20 ile kullanılmalı.

Sistem içerisindeki kullanıcı hareketlerini bir worker ile baştan aşağıya net bir şekilde tanımlabilir. python ve erlang’ın tüm kütüphaneleri herhangi bir problem olmaksızın kullanılabilir.

Bu arada uzun süredir takip ettiğim bir podcast serisi, youtube, spotify veya itunes üzerinden takip edilip, dinlenebilir. Linki aşağıda;

Özellikle Engin Geçtan’ın İnsan olmak adlı kitabının yorumları dinlemeye değer.

https://www.google.com/search?q=engin+ge%C3%A7tan+insan+olmak

Sevgiler.

mzbench ile performans analizleri – 2

Selamlar,

Bugün daha önce başlamış olduğumuz mzbench ile performans analizlerinin 2. yazısı ile beraberiz. Bu yazımızda mzbench ve node’ları oluşturulmasından bahsedeceğim.

Kurulum aşaması oldukça basit ve uygulanabilir, ben özellikle “From source” bölümünü tavsiye ederim.

Bunun mzbench sunucu kurulumu linux türevi üzerine kurulması daha doğru olacaktır.

Küçük bir ek, yazını yazıldığı bu günlerde henüz mzbench kodları Erlang 21.x için uygun değildi. Bu nedenle Erlang 20.x versiyonlarını devam etmenizi öneriyorum. Erlang 21.x’e uygun gale getirmek biraz uğraştım ama o kadar da kolay değil.

Kurulum sonrasında hemen “Quickstart” bölümüne geçebilirsiniz. Bir küçük hatırlatma eğer işletim sistemi CentOs veya benzeri firewall ayarlarının tümü kapalı olan bir dağıtım ise “sudo” ile çalıştırmayı ve iptables üzerinden gerekli yetkileri vermeyi unutmayın.

İlk çalıştırma sırasında çalışması biraz uzun sürebilir, merak etmeyin ilk kez çalıştığı için kodlarını derliyor :) daha sonrasında çok hızlı açılacaktır.

Herhangi bir node tanımı yapmadık bu nedenle tek node (mzbench sunucusunun kendisi) olarak çalışacaktır. Günümüz sunucularında yer alan CPUx8 ve 32GB Memory ile aynı anda 2500 kullanıcıya kadar herhangi bir sorun çıkarmadan simule edecektir. bu birçok performans analizi yeterli bir sayıdır.

Bu sayıyı daha da arttırmak istiyorsak, mzbench sunucusuna node eklememiz gerekiyor, mzbench node’lar üzerindeki tüm işlemleri kendisi yapacaktır, sizin sadece çalışan bir linux dağıtımı ile passwordless ssh login işlemlerini gerçekleştirmeniz gerekli. Başka bir kurulum veya yetkilendirme adımına gerek yok.

Dikkat: mzbench “sudo” ile başladı ise root@xxxx olarak passwordless ssh tanımları yapılmalı.

mzbench’in konfigurasyon dosyası “/<kullanıcı adı>/config/mzbench/server.config” dır. Bu dosyanın içeriği aşağıdaki gibidir;

[{mzbench_api,
[{vm_args,[]},
{bench_poll_timeout,20000},
{max_bench_num,1000},
{bench_log_read_chunk,32000},
{node_git,"git@github.com:satori-com/mzbench.git"},
{worker_deployment_path,"~/.local/share/mzbench_workers"},
{user_authentication,[]},
{network_interface,"0.0.0.0"},
{keyfile,"~/.local/share/mzbench_api/server.key"},
{node_interconnect_port,4804},
{warn_free_disk_kb,100000},
{plugins_dir,"~/.local/share/mzbench_api/plugins"},
{final_metrics_percentiles,[min,50,90,95,max]},
{ntp_max_timediff_s,undefined},
{protocol,http},
{cacertfile,none},
{bench_metrics_compression,none},
{node_deployment_path,"~/.local/share"},
{bench_data_dir,"~/.local/share/mzbench_api/data"},
{listen_port,4800},
{bench_log_file,"log.txt"},
{metric_update_interval_ms,25000},
{tgz_packages_dir,["~/.local/cache/mzbench_api/packages",
"/opt/mzbench_api/cache"]},
{bench_metrics_file,"metrics_~s.txt"},
{white_list,[]},
{admin_list,[]},
{gc_sleep,10},
{black_list,[]},
{cloud_plugins,[{static,#{hosts => ["root@192.168.1.01","root@192.168.1.03","root@192.168.1.05", "root@192.168.1.02", "root@192.168.1.04","root@192.168.1.06"],
module => mzb_staticcloud_plugin}}]},
{bench_read_at_once,1024},
{custom_os_code_builds,enable},
{bench_log_compression,deflate},
{certfile,"~/.local/share/mzbench_api/server.crt"},
{bench_log_max_dashboard,2048000},
{auto_update_deployed_code,enable},
{bench_log_user_file,"log_user.txt"}]
}].

Özellikle kalın yazı ile belirttiğim ayarlar oldukça önemli. Bunlar;

cloud_plugins; Node listesini ve hangi kullanıcı ile bağlanacağını belirtir. Dediğim gibi passwordless ssh login ile mzbench sunucusu node’lara erişebilir olması gerekiyor. Kısaca sunucu üzerinde “ssh <kullanıcı_adı>@node_id” yazdığınızda sistemin şifre sormaması gerekiyor. Birden fazla node eklendiğinde mzbench son eklenen node’u sadece metrikleri tutmak için kullanır, yani son eklenen node yük için kullanmaz. Bunu engellemek için sunucunun kendi adresini de listenin en sonuna ekleyebilirsiniz. Bunu yaptığınızda özellikle metric_update_interval_ms ve bench_poll_timeout değerlerini yükseltmeniz gerekir ki aynı makine hem sunucu hem de metric collector olarak çalışabilsin.

metric_update_interval_ms; Bu bilgi ilgili node’ların oluşturdukları değerleri ne kadar sıklıkla sunucuya ileteceklerini gösteriyor. Gereksiz kısa bir değer sunucular üzerindeki yükü arttıracak ve node başına 2500 kullanıcı sayısı gittikçe azalacaktır.

final_metrics_percentiles; Belirlenen metriklere ait hangi değerlerin grafik olarak gösterileceğini ifade eder. Performans analizlerinde ortalama pek bir işe yaramaz. Bu nedenle bu varsayılan değerler yeterlidir, eğer çok hassas bir servis var ise 99’un da eklenmesi faydalı olacaktır.

bench_poll_timeout; Sonucunu node’lara dağıttığı kullanıcıların akıbetini öğrenmek için yaptığı çağrının zaman aşımı değeridir. Node’ların çok yoğun olduğu yüksek kullanıcılı testlerde Node’lar bazen sunucuya bu timeout değeri içerisinde yanıt veremezler. Mzbench node’lardan birisi kapandığını düşündüğü için tüm işlemleri durdurur.

Şimdilik yazacaklarım bu kadar, bir sonraki yazımda performans scriptlerinin bahsedeceğim.

Sevgiler.

mzbench ile performans analizleri

Selamlar,

Bugün özellikle geçmiş günahlarımdan biri olan performans analizleri konusunda yazacağım. Uzun bir süredir performans analizleri / iyileştirmeleri uğraşıyorum. Bu çalışmalar sırasında pek çok ürünle çalışma fırsatı buldum, bunlar arasında JMeter, IBM RPT, Microfocus (HP) Load Runner bunlardan bazıları. Bu ürünler kendi alanlarında oldukça iyi. JMeter herhangi bir “recording tool” u olmadığı için el ile çok işlem gerektiriyor ama aralarındaki en iyi de o açıkçası.

Fakat bu yazımda ben mzbench’den bahsedeceğim. Oldukça iyi ve tamamlanmış bir ürün. Hali hazırda 10k kullanıcıyı simule etmek için aktif halde kullanıyorum. Kullanmak için kesinlikle development yetenekleri gerekiyor (özellikle erlang). Hatta eğer development yeteneğiniz var ise JMeter’dan da oldukça iyi bir ürün. Eğer development yeteneğiniz yok ise topluluk desteği güçlü olmadığı için JMeter ile başa baş olabilir.

Özellikle erlang’ın gücü ile 4 node ile 10k kullanıcı etkisi yaratılabiliyor. Diğer ürünler ile bu rakamlara ulaşmak neredeyse imkansız.

Node’lar için pek de CPU’ya ihtiyaç yok fakat memory ve network sistemlerinin özellikle iyi olması gerekiyor. Herhangi bir linux dağıtımı ile sorunsuz çalışıyor. Ben CentOs ile mzbench’in adresinde verilen talimatları takip ederek sorunsuz şekilde çalışıyorum.

Cloud üzerinde yaygınlaşması ise mzbench server’ın node’lara passwordless ssh ile bağlanmalarını sağladığınızda ortadan kalkıyor.

Kendi ölçüm değerlerinizi kod içerisinde kendiniz belirtiyorsunuz. Tüm çalışmalarınızı ve raporlarınızı kayıt altında tutuyor.

Kısaca giriş seviyesinde erlang bilgisi ile belki de en iyi performans analiz ürününe sahip oluyorsunuz.

Bu performans analizleri beraber, hedef sunucu üzerindeki değerleri “node exporter” veya benzeri bir ürün ile prometheus + grafana ya almanızla beraber “high level” performans analizleri için gerekli tüm elementlere sahip olabilirsiniz. Tek yapmanız gereken şey developer olmak..

Sevgiler.

Yeni – yeniden başlangıçlar

Selamlar,

Uzun bir aradan sonra merhaba, biliyorum çok uzun süredir yazamadım belki de bu uzun araya ihtiyacım vardı.. veya başla şeylerin arkasına saklandım. Artık çok da önemli değil açıkçası yine yazmak için vaktim var. Aklımda da yazacak bir şeyler varken vakit kaybetmek istemedim.

Tekrar yazılım geliştirici olarak çalışmaya başladım. Uzun süren oldukça başarılı yöneticilik deneyimlerinden (sadece ben öyle düşünmüyorum :) ) sonra benden daha iyi veya denk olduğunu düşündüğüm bir ekip ile tekrar yazılım geliştirmeye başladım. Benim için oldukça heyecanlı ve zevkli. Uzun süredir ilk kez yaptıklarımdan mutluluk duyuyorum. İlk başlarda üretkenliğim tavan yaptı, belki de bu kadar tecrübeli olmasam maymun iştahlılık yapıp bir çok şeyi aynı anda yapmaya çalışırdım ama neyse ki şu agile & lean süreçleri kanıma işlemiş, istesem de aksi şekilde davranamıyorum.. her durumda işleri bir şekilde bu süreçlere uydurmayı başarıyorum :)

İlk yazım olduğu için çok uzatmayacağım ama söylemek istediğim, 2009’da Bilgi Üniversitesinde MBA öğrenimi ile beraber başladığım ve özellikle yazılım geliştirme ve test ekiplerinde başarıyla yürüttüğüm yöneticilik deneyimine belki bir “,” belki de bir “.” koyarak tekrar yazılım geliştirme başladım. Eskiden olduğu gibi sadece akşamları değil yani :), ilk 4 ay geride kaldı. Maşallah deyin :)

Biraz ekipten bahsedeyim, ekip içerisindeki herkes yazılım geliştirici herhangi bir sıfat veya sabit bir rol yok. Yeteneklerine ve isteklerine göre işleri alıyorsun. Zaten bir başlık altında çalışmaya başladıktan sonra o başlıktan kurtulmak zor :) ama imkansız değil. Ekip içerisindeki tecrübe ve yetkinlik (ben dahil 5 kişi daha önce ekip yönetmiş) yüksek olduğu için projenin sonunu ve yolda başımıza gelebilecek potansiyel çalışma zorluklarını en başından görebiliyoruz. Bu nedenle otomasyon, çeviklik ve değişime açık olmaktan hiç ödün vermeden devam ediyoruz. Dediğim gibi maşallah deyin :)

Sevgiler.

Bahar temizliği – zor zamanlar

Merhabalar,

Geçtiğimiz dÖnemde bir bahar temizliğine giriştik. Giriştik diyorum çünkü ne ile karşılaşacağımızı pek de bilmiyorduk açıkcası. Temizlik sırasında Ön gÖremediğimiz pek çok problem ile karşılaştık. Duvarlar üzerindeki fayansları yağ tabakası kaplamış ve aradan seneler geçtiği için bu yağ normal temizleyiciler ile çıkmadı. Kollarım koptu deyimini o an gerçekten yaşadım.

Tüm bunlara ek olarak, uzun süre temizlenmemesi nedeniyle tüm metaller paslanmıştı. Yine standart temizleyicileri deneyip başarısızlığa uğradım.

Her iki konu için de başarısızlığı uğradıktan sonra abimden yardım istedim. Özkimsan.com üzerinden pas sÖkücü ve yağ sÖkücüler sipariş ettim. Sonuç tek kelime ile mükemmel. Standart yağ ve pas sÖkücülerle bildiğin yarım yamalak temizlediğim (veya temizlediğimi zannettiğim) yüzey ve malzemeleri çarçabuk temizledik. Sonra da kendime neden daha Önce sipariş vermedim diye kızdım açıkcası.

Siz siz olun, profesyonel destek alıp bu işlere girişin. Ben Özkimsan.com’u kullandım memnun kaldım. Sizlere de tavsiye ederim.

Kolay gelsin.

Jetty Rails 0.8.1 ek güncellemesi

Merhabalar,

Bir süre Önce, çalışmakta olduğum bir projenin Windows sistemleri üzerinde yayınlanma zorunluluğu ortaya çıktı. Daha Önceki yazılarımda rails projeleri için Windows alternatiflerinden bahsetmiştim.

Jetty-rails 0.8.1 için belirttiğim güncellemeleri yaptıktan sonra kullanılan jetty sürümünü “Jetty 6.1.26” olarak güncelledim. Cisco bir firewall’ın ardından çok uzun bir süredir herhangi bir performans ve güvenlik problemi olmadan uzun süredir hizmet veriyor.

Tavsiye ederim.

Sevgiler.

Ruby 2.0 Woow

Merhabalar,

Ruby 2.0 çıktı, hem de oldukça iddialı. SÖylenene gÖre pratik kullanıma hazır ve nazır bir versiyon. Umarım ilk kullananlar gÖrüşlerini paylaşır.

Yenilikler;

  • Keyword arguments: Python kullanıcıları bilir, method çağrımları sırasında parametrelerin isimleri ile atama yapabilme yeteneği.
  • Yeni Mix-in yÖntemi
  • %w ile diziler oluşturabiliyorduk, şimdi %i ile sembol dizileri oluşturabileceğiz. Belli ki Rails için :)
  • Artık varsayılan encoding UTF-8 olmuş nihayet.. valla nihayet
  • Enumerable‘dan türeyen diğer tüm sınıflar için (genel anlamda diziler ve range’ler için) yeni mis gibi geliştirmeler.
  • Yeni regular expression motoru (Oniguruma), ilgili yazım
  • Daha gelişmiş debug desteği, belki şu debug amaçlı logger’ların sayısını azaltabiliriz.
  • Bu Önemli; GC (garbage collector…nam-ı değer çÖp toplayıcısı) için “bitmap marking” yÖnteminin kullanılması. Normalde bu yÖntem REE’deki arkadaşlar tarafından uzun süredir kullanıyor ama performans konusunda iyileştirmeler yapılmış diye okudum bakalım ne kadar doğru..
    REE’de yer alan GC performansı Q(n) di sanırım,
    Ruby 2.0’da bunu Q(1) olacak şekilde iyileştireceklerini sÖylüyorlardı.
  • Artık daha hızlı method çağrımı
  • Rail artık daha hızlı açılacakmış.. mesele açılması değil, çalışması :)
  • Noktalı sayılar için işlemleri de iyileştirmişler.

İyi çalışmalar.

Superonline faciası

Merhabalar,

Sizin başınıza gelebilir dikkatli olun. 2009’dan beri hiç sorunsuz kullandığım firma bir anda nasıl değiştiğini ben de anlamadım. Önce 14.10 tarihinde uydurma bir kampanya tanımladılar. Bir sürü telefon, bin bir dereden su getirmeler falan 30.10’da bu kampanyayı iptal ettiler. Parasını 15.11’de geri Ödediler.

Şimdi sıkı durun, 30.10’da kampanyayı iptal ederken, kampanya ile beraber tanımadığım başka bir adama verdikleri modemin internet erişimini iptal edeceklerine benim kullandığım modemin internet erişimini iptal ettiler.

30.10’dan beri her gün superonline müşteri hizmetlerini arayıp duruyorum ama son durum inanılır gibi değil ama şÖyle; adamın biri benim adıma tanımlanmış ama benim olmayan bir modem ile internete “sınırsız” bağlanabilirken, ben bağlanamıyorum.

Bu kÖtü hizmeti ne duydum, ne de biliyorum. İnsanın cinnet geçirip telefonda çıldırası ve internette alay konusu olası geliyor. 20 gündür bu karışıklığı çÖzemez mi bir firma.

Size superonline’sız mutlu internetler dilerim.

Kolay gelsin.

Adobe Flash mobil platformdan çekiliyor

Merhabalar,

Adobe Flash için mobil platformlardan çekilme kararı almış.
Konu ile ilgili haberler için;

1999 sonlarında veya 2000’in başlarında “tüm ara birimler bir gün Flash olacak” gibi bir yorum yapmıştım. İlk başlarda Macromedia ve Adobe
bu sÖzlerimi haklı çıkarmak için çok uğraştılar ve çok sıkı çalıştılar. Ama bu aralar Adobe geleceğin platformu olan mobil sistemler ve yeni browser’lar üzerinde daha fazla geliştirme yapmayacağını açıklaması biraz ilginç bir karar.

Yapılan açıklamada bahsedilen diğer bir konu var; Adobe’un, Flash uygulamalarını Adobe AIR üzerinde daha iyi çalıştırmak için daha fazla kaynak ayıracağı. Sanırım yakın gelecekte Flash’in yeni versiyonlarını çalıştırmak için AIR kullanıyor olabiliriz.

Ekleme
Sanırım Microsoft da bu konuda bazı adımlar atabilir. Örneğin bir sonraki sürümden sonra Adobe’un Flash için yaptığının bir benzerini Silverligth için yapmak gibi.

Microsoft may halt development work on Silverlight plugin after next release

İyi çalışmalar.

Ruby 1.9.3 çıktı

Merhabalar,

Ruby üzerinde 1.9 sürümlerinin yeni versiyonu 1.9.3 karşımızda. Bu versiyon ile beraber Özellikle “garbage collector” üzerinde bir takım iyileştirmeler yapılmış. Bununla beraber Change Log adresinde Özellikle thread sınıfı için işletim sistemlerine gÖre daha detaylı güncelleştirmeler yapılmış gibi gÖrünüyor. Ek olarak daha fazla “unicode” desteği de eklenmiş miş..

Yakın zamanda internet üzerinde performans değerlendirmeleri dolaşmaya başlar.

Kolay gelsin. Sevgiler.

Rails için jetty_rails güncellemesi

Merhabalar,

Bir Önceki yazımızda rails için jruby kullanımından ve windows üzerinde rails uygulamalarının servis edilmesi hakkında bir yazı yazmıştık. Bu yazıda jetty_rails’in sürümünün biraz eski olduğundan (son güncelleme tarihi 2009-07-08 20:28) bazı problemle karşılaştığımı yazmıştım.

Bu yazıda sizlere bu problemleri nasıl ortadan kaldıracağımızı anlatmak istiyorum.

1. Öncelikle jetty-rails’i standart gem yÖntemleriyle yüklüyoruz.

jruby -S gem install jetty-rails

Rails için jetty_rails güncellemesi yazısına devam et

Rails için yazılım geliştirme ortamı

Merhabalar,

Ne zamandır arkadaşlarım rails için yazılım geliştirme ortamı sorup duruyorlar, aslında ortada çok fazla alternatif olduğu için kafa karışıklığına neden olabiliyor.

Son (bir windows sunucu da host etmek zorunda olduğumuz) projem de redcar + jruby 1.6.3 + rails 3.0.9 + mysql >5 (arabirim olarak mysql workbench) ortamında yazılım geliştirme gerçekleştirdim.

Neden redcar;

  • Netbeans Build-in debugger’ı code-complete Özelliği ile tam bir editÖr ama 6.9.1’den sonra desteği yok.
  • Redcar’ın kısa yolları ve “snippet” lerine alışırsanız oldukça hızlı ve efektif şekilde uygulamanızı geliştirebilirsiniz.
  • Diğerlerini denemeyin bile :)

Neden MRI değil de jruby kullandığımı soracak olursanız, cevabı yukarıdaki parantez içerisinde yazdığım küçük cümlecikte saklı. Evet malesef rails için windows üzerinde yüksek TPS değerlerine erişebilecek bir sistem kurmak oldukça zor ve problemli. Bu nedenle jruby ile java‘nın bu getirilerinden faydalanmak istedim.

JRuby’nin bu gücünü kullanmak içinde bazı çalışmalarım oldu. GlassFish, Tomcat :) hatta IIS üzerinde koşturup, performans değerlerini inceledim. Tomcat ve IIS için pek olumlu konuşamayacağım, belki de ayarlarını tam yapamadığım için olabilir ama GlassFish gerçekten iyi bir performans grafiği çizdi. GlassFish’in tek kÖtü yanı çok büyük ve gereksiz birçok bileşen içermesi ama elbette bazı projelerin bu bileşenlere ihtiyacı olabilir, bu durumda tercih edilebilecek bir sunum ortamı olabilir.

Benim tercihim ise jetty oldu. jetty_rails adlı bir eklenti ile işler kolaylaşıyor fakat ne yazık ki eklenti oldukça eski bir sürüme ait bu nedenle bazı ufak tefek düzeltmeler yapmamız gerekiyor. Lafı çok uzattık bu düzeltmeleri daha sonra sizlerle paylaşırım.

Son sÖz olarak, rails uygulamanızı yazarken aşağıdaki maddeleri gÖz Önüne almanızı tavsiye ederim;

  • Rails uygulamanızı kendiniz host etmeyin.
  • Rails uygulamanızı gerçekten kendiniz host etmeyin.
  • Rails uygulamanızı Linux bir sunucuda host edin. Linux için zilyon tane başarılı alternatifi deneyebilirsiniz.
  • Rails uygulamanızı Windows sunucuda host etmeyin.
  • Rails uygulamanızı Windows sunucuda host etmeyin, gerçekten.
  • Rails uygulamanızı Windows üzerinde host etmek istiyorsanız, jruby uyumlu olmasına Özen gÖsterin. Host etmek istediğiniz zaman duruma gÖre glassFish veya jetty kullanabilirsiniz.

Kolay gelsin :)

Oracle 11g Cursor kullanımı

Merhabalar,

Geçenlerde Oracle 11g’de üç çeşit cursor’ın karşılaştırmalı performans sınamasını gerçekleştirdim. Aslında iş için gerekti ama fırsattan istifade sizlerle de paylaşmak istedim. Bu aralar aktif şekilde blog yazımı ile ilgilenmesem de buna benzer fırsatları değerlendirmek gerekli :)

3,629,848 adet kayıt için 11g’de performans değerleri aşağıdaki gibidir;

1- Cursor ve Bulk Collect (Open / Fetch Bulk limit 10000 / Close) ~2,5sn – belirlenmiş memory kullanımı.
Start:34.26.163863000 PM +03:00
End: 34.28.616085000 PM +03:00

2- Sadece Implicit (For) Cursor ~4,5sn – düşük memory kullanımı (1. maddenin limit 100 ile kullanımı kadar)
Start: 33.22.212231000 PM +03:00
End: 33.26.701057000 PM +03:00

3- Eski tarz (Open / Fetch / Close) Cursor ~50sn – çok düşük memory kullanımı
Start: 27.52.405369000 PM +03:00
End: 28.42.254359000 PM +03:00

1. madde ile 2. madde arasındaki fark tamamen “limit 10000” den kaynaklanıyor. 2. Madde için oracle sistemi varsayılan olarak 100 değerini kullanıyor. Bu nedenle 2.nin memory kullanımı 1.ye gÖre daha az olduğu yÖnünde genel bir kabul mevcut.

Kolay gelsin.

Oracle 11g Cursor kullanımı yazısına devam et