SQL Query Tunning Hakkında

6 Ekim 2019 Pazar

Genellikle Oracle ve Microsoft SQL’de “tuning” den yani “performans artırma / akort yapma” donanım kaynaklı olarak düşünülür. Sunucu üzerinde daha fazla CPU, RAM vb. bileşenlere bakılır. Bir noktaya kadar doğru bir yaklaşımdır. Fakat kullanıcıların özellikle DML sorguları (Örn: Select) çalıştırdığında, bir miktar sunucu performansını etkileyecektir. Peki aynı anda 50 kullanıcı sorgu çalıştırırsa, arka planda raporlar çalışırsa? Durum kötüye gider…

Herhangi bir SQL sorgusu çalıştırıldığında, istenilen bilgiye nasıl ulaşılacağına “Optimizer” adı verilen veri tabanı optimizasyon birleşeni karar veriyor. Oracle, kullanıcılarına tahminler üzerine çalışan “Rule-Based Optimizer” ve daha çok akıl yürütme yöntemi ile çalışan “Cost-Based Optimizer” olmak üzere iki adet optimizasyon seçeneği sunmaktadır.

MS SQL’de de execution plan vb. kontroller ile sorgu anını kontrol edebiliriz. Sorgularda en çok can sıkan kısım, yanlış yazımlarla index’lerin kullanılamaması ve sorgu süresinin giderek artmasıdır.

Aşağıda sık kullanılan query örnekleri var. Bu örneklerde, yanlış kullanımı ve doğru kullanımı beraber yazdım.

HAVING yerine WHERE kullanımı:   
Önerilmez
SELECT product_type_id,
AVG(price)
FROM products
GROUP BY product_type_id
HAVING product_type_id IN ( 1, 2 );

Önerilir
SELECT product_type_id,
AVG(price)
FROM products
WHERE product_type_id IN ( 1, 2 )
GROUP BY product_type_id;

İkincisi işlemin başlangıcında kayıtları sınırlarken, ilkinde tüm kayıtlar için AVG çalıştırılıyor.

UNION yerine UNION ALL kullanımı
Önerilmez
SELECT product_id,
product_type_id,
name
FROM products
UNION
SELECT product_id,
product_type_id,
name
FROM more_products;

Önerilir
SELECT product_id,
product_type_id,
name
FROM products
UNION ALL
SELECT product_id,
product_type_id,
name
FROM more_products;

UNION ALL her iki sorgu sonucunda tüm kayıtları getirirken, UNION tekrarlanan kayıtları elemine ediyor. Bu nedenle, gerçekleşen eleme işleminden dolayı UNION ALL daha hızlıdır ve sistemi yormaz.

IN yerine EXISTS kullanımı:   
Önerilmez
SELECT product_id,
name
FROM products
WHERE product_id IN (
SELECT product_id
FROM purchases );

Önerilir
SELECT product_id,
name
FROM products pr
WHERE EXISTS (
SELECT 1
FROM purchases pu
WHERE pu.product_id = pr.product_id );

IN bir listede aranan verinin olup olmadığını kontrol eder. EXISTS sadece kayıtların varlığını kontrol ederken, IN ise gerçek verileri kontrol eder. Alt sorgularda EXISTS daha iyi sonuçlar verdiğinden tercih edilmelidir.

OR yerine UNION kullanımı:   
Önerilmez
SELECT ...
FROM ps_jrnl_header a
WHERE jrnl_hdr_status = ‘E’
OR EXISTS
( SELECT ‘x’
FROM ps_jrnl_header
WHERE business_unit_js = a.business.unit_js
AND journal_id = a.journal_id
AND unpost_seq = a.unpost_seq
AND jrnl_hdr_status = ‘E’ );

Önerilir
SELECT ...
FROM ps_jrnl_header a
WHERE jrnl_hdr_status = ‘E’
UNION
SELECT ...
FROM ps_jrnl_header a,
ps_jrnl_header b
WHERE a.business_unit_js = b.business.unit_js
AND a.journal_id = b.journal_id
AND a.unpost_seq = b.unpost_seq
AND a.jrnl_hdr_status = ‘E’
AND b.jrnl_hdr_status != ‘E’;

UNION kullanıldığında, optimizer kayıtları getirmek için iki benzer işlem gerçekleştirir. OR yapısında ise optimizer karar verirken daha karmaşık işlemler yapar ve daha az verimli sonuçlara ulaşır.

İndeks kullanımını engelleyen örnek bir sorgu:
Önerilmez
...
WHERE SUBSTR(account_name,1,7) = ‘CAPITAL’

Önerilir
...
WHERE account_name LIKE ‘CAPITAL%’

SUBSTR indeks kullanımını iptal eder.


Share/Bookmark

Ödeme Sistemlerinde HCE Kullanımı Hakkında

HCE (Host Card Emulation), mobil cihazın işletim sisteminin günlük hayatta kullandığımız kartları (kredi kartı, debit kart, gift kart vs.) emule ederek NFC ile temassız ödeme işlemini gerçekleştirmemize yarayan bir teknolojidir diyebiliriz. Başka bir deyişle, telefonlarımız ödemelerde kullandığımız kartlar gibi davranabiliyor.

Şu an Türkiye’de de çoğu banka HCE entegrasyonunu tamlamak üzere diyebilirim.

HCE ile ödemede ödeme için gerekli olan kart bilgilerinin telefon üzerinde tutulmasına gerek yoktur. İlgili kart bilgileri bulut üzerinde tutulmakta ve bu teknoloji, mevcut geleneksel yönteme göre hem kolay uygulanabilir hem de daha ucuzdur.  HCE teknolojisinde ne telefon üzerinde ne de SIM karta entegre bir çip olarak secure element yer almasına gerek yoktur. Mobil ödeme hizmeti sunan servis sağlayıcılara donanım bağımsızlığı bakımından büyük fayda sağlamaktadır. 

Türkiye’de birçok banka uygulamalarının Android versiyonlarında HCE ile mobil temassız ödeme yapılabilir. Bu uygulamaları kullanarak ödeme yapabilmek için 3 koşulun sağlanması yeterlidir:

1. İlgili banka adına alınmış bir kart sahibi olmak

2.  Güncel bir versiyon Android telefonuna sahip olmak.

3.  İşlem yapmadan önce eğer kapalıysa NFC özelliğini açmak gerekiyor.

Daha detaylı bilgi için aşağıdaki kaynaklara da bakabilirsiniz.

Mastercard

http://www.hceservice.com/ 

Visa

https://www.openwaygroup.com/way4-wallet-solution


Share/Bookmark

Eylül 2019 Dergi Paketi

Toplam Boyut 3.02 GB. Link silinmeden indirin!!!

https://turbobit.net/r1txuundwg9b/Agustos2019Dergiler.WT.rar.html


Share/Bookmark

Engellilerin ATM Kullanımı

Bankalar görme veya duyma engelli müşteriler için de  ATM kullanımı ve hizmeti sağlamak zorundalar. Yakın zamanda karşılaştığım ama genellikle bazı  bankaların çok umursamadığı bir durum.

Küçük bankalar, genellikle büyük banka şubeleri  veya ATM’leri o lokasyonda bulunuyorsa bu konuyla çok ilgilenmezler. Çünkü, yan yana veya birbirine uzaklığı 50 metreden az olan ATM’lerden sadece bir tanesinin aşağıdaki maddeler ile uyumlu olması yeterlidir. Bu durum haricindeki tüm ATM’lerin görme engellilere hizmet vermesi zorunludur.

Peki yasadaki maddelerin detayları nelerdir? Görme engelli müşterilerin erişimi ile ilgili maddeler altta yer almaktadır.

MADDE 7 – (1) Görme engelli müşterilerin kullanımına uygun ATM’lerde, ekranda gösterilen uyarılar, yönergeler, müşterinin girdilerine ilişkin istenilen onay, hata mesajları gibi bilgilerin sağlanmasına yönelik sesli menü fonksiyonu bulunur.

(2) ATM’lerdeki sesli menü hizmetinin mahremiyeti sağlanır. ATM’lerde sesli menü, kulaklık girişi veya telefon ahizesi gibi bütünsel anlamda erişilebilir bir teknoloji ile sunulur. İşlem öncesinde ya da işlemin herhangi bir aşamasında ATM ekranını kapalı konuma getirme seçeneği sunulur.

(3) ATM’lerde sesli menü kapsamında, asgari olarak bakiye sorgulama, para çekme, para yatırma, kredi kartı borcu sorgulama ve kredi kartı borcu ödeme işlemleri bulunur.

(4) ATM’lerde sesli menülerin gerektirdiği tuşlar üzerinde yer alan sembollerin kabartma olması ve dokunulduğunda diğer tuşlardan ayırt edilebilmesi sağlanır.

(5) ATM’lerde sesli menünün başlatılmasının kolaylıkla keşfedilebilir olması ve ek bir eğitim gerektirmeden kullanılması sağlanır. Kulaklık ile sesli menü sunuluyorsa, kulaklığın takılması ile otomatik olarak sesli menü başlar ve çıkarılması ile otomatik olarak sonlanır.

(6) ATM’lerde sesli menü kapsamında tekrarlama özelliği bulunur ve ses yüksekliğinin müşteri tarafından ayarlanabilmesine imkân tanınır.

(7) Sesli menü için kullanılan ifadelerin ve menü sırasının, tüm bankalarda standart olmasının sağlanmasına özen gösterilir. Bu kapsamdaki koordinasyon Türkiye Bankalar Birliği ve Türkiye Katılım Bankaları Birliği tarafından yürütülür.

(8) ATM’lere erişim için zemin üzerinde yönlendirmeye yarayan, çevredeki uygulamalarla bütünleştirilmiş, hissedilebilir yürüme yüzeyi işaretleri kullanılır.

(9) Banka, hizmet verdiği tüm ATM’lerini bu maddede yer verilen hükümlere göre görme engelli müşterilerin kullanımına uygun hale getirir.

(10) Yan-yana veya birbirine uzaklığı 50 metreden az olan ATM’lerden sadece bir tanesinin bu maddede yer verilen hükümler ile uyumlu olması yeterlidir. Söz konusu fiziksel uzaklıktaki diğer ATM’ler için bu madde ile uyumluluk şartı aranmaz.

Kaynak: http://www.resmigazete.gov.tr/eskiler/2016/06/20160618-2.htm


Share/Bookmark

Kitap Tavsiyesi: Mark Manson – Ustalık Gerektiren Kafaya Takmama Sanatı

Kitabın en güzel kısmı adı bence. Çünkü kafaya takmamak gerçekten ustalık isteyen bir beceri. Etrafımızda nadiren gördüğümüz dünya yansa umursamayacak tipler vardır. Ama o kafaya nasıl ulaştıklarını kimse bilmiyor. Doğuştan şanslı değillerse onların da kafaya takmamayı profesyonelliğe taşımak için çabalamış olmaları gerekir diye düşünüyorum:)

Kitabın; kafaya takmamak mümkün değildir ama kafaya takılacak şey tercihtir, yani seçim hakkınız var, kısmını sevdim.


Share/Bookmark