Özgür Özvarış

Bir yazılımcının kırık dökük dünyası

SqlLite yavaş insert çözümü

clock Temmuz 17, 2014 16:33 by author OzgurOzvaris

Merhaba Arkadaşlar,

Kaynak : SQLite Insert very slow?

SqlLite da eğer çoklu insert sorgu gönderecekseni loop'unuzun başına ve sonunda transaction açma kapama eklemeyi unutmayın. Aksi takdirce sizi çok oyalar.

Ör :

dbcon = new SQLiteConnection(connectionString);
dbcon.Open();

SQLiteCommand sqlComm;
sqlComm = new SQLiteCommand("begin", dbcon);
sqlComm.ExecuteNonQuery(); 
//---INSIDE LOOP

 sqlComm = new SQLiteCommand(sqlQuery, dbcon);

 nRowUpdatedCount = sqlComm.ExecuteNonQuery(); 

//---END LOOP
sqlComm = new SQLiteCommand("end", dbcon);
sqlComm.ExecuteNonQuery(); 
dbcon.close();

İyi çalışmalar.



Excel'de Clustered Stacked Column Chart

clock Temmuz 16, 2014 18:26 by author OzgurOzvaris

Merhaba,

Kaynak : http://www.youtube.com/watch?v=ztphRTL_rAw

İş geldi dayandı istatistiğe ve grafiğe dayandı :) Olap küpler İş zekası uygulamaları çatıyada dayandık...

Yaptığımız web servis entegrasyonu bize çok farklı ufukların kapısını açtı çok detaya girmeyeceğim ancak sisteminizi parçaladıktan sonra sistemin neresinde nezaman hangi şartlarda ne kadar performans ürettiğinizin ölçülebilir olması için her tarafında loglar yazıyorsunuz. Bu loglar iyi güzelde bu seferde farklı farklı biriken bu logları birleştirme ve bir karar çıkarmanız için grafiklere dökme ihtiyacı meydan geliyor.

İlk önce excelde clusterd bar grafikler yaptık güzel oldu, sonra stacked garafikler yaptık daha güzel oldu ee yeter mi hiç. Şimdide internette geçen clusterd stacked bar grafikler yapma ihtiyacı duyduk. şimdi onun yapma ile kısa ve öz bir kaç bilgi vereceğim.

Çıktı olarak almak istediğiniz veri aşağıdaki resimdeki gibi ise yani eknerek oluşan bar grafiklerinizi birde fazla parçası var ise anlatacağım yöntem işinize yarıyacaktır.

 

Bu grafiğin oluşması için ihtiyacınız olan excel tablo şu şekilde olmalıdır

 

Örnekte geçen resimleri ürettiğim excel dosyasını almak isterseniz

 Example-of-Cluster-Stacked-Chart3.xlsx (14.20 kb)



Simple sql server management studio alternatifleri

clock Haziran 30, 2014 10:25 by author OzgurOzvaris

Merhaba,

Kaynak : http://stackoverflow.com/questions/5170/sql-server-management-studio-alternatives-to-browse-edit-tables-and-run-queries

Arkadaşlar bazen uygulama sunucunuzda sql server management studio olmayabilir. Bildiğiniz üzere bu tool free bir tool ancak indirmesi kurması zaman alıyor. Eğer acil olarak bir sunucuda sql bağlantısını test etmeniz gerekirse sizlere uzun zamandır böyle zamanlarda kullandığım Query Express isimli tool'u tavsiye ederim.

Buradan download edebiilirsiniz Query Express .

İyi çalışmalar.

 



Sqllite MSSQL bağlantısı

clock Haziran 26, 2014 16:03 by author OzgurOzvaris

Değerli Arkadaşlar,

Kaynak :

Creating a SQL Server Linked Server to SQLite to Import Data

SQLlite'ı hafife almamanızı tavsiye ederim. Adı lite olsada çok iş görüyor. Loglama sistemimiz tamamen ona emane etmiş durumdayız. Çok basit bir log tablosuna sürekli olarak log satırları yazdırıyoruz yaklaşık olarak günde 300.000 satırdan fazla log satırı yazıldığı oluyor. Ama hiç bir veri kaybımız olmadı. Sorunları yok değil ama loglama konusunda beklentimizi karşıladığını söylemelim.

İyi güzel logluyoruzda bu logları nasıl işleyeceğiz ve analiz edeceğiz. İşte burada lite olmasının sorunları başlıyor. Excel'e çıktı alması bizi 65bin küsür sınırı ile muhatap ediyor excel export adı altında yeni satır sınırı olmayan excellere export yapsada bu işlemi hem çok yavaş hemde açık olan excel'e satır satır eklemek gibi garip bir yöntem kullandığı için 100bin üzeri satırlada ciddi zaman kaybı oluyor. Asıl sorun bu değil asıl sorun sunucumuzda bu yöntemle açabileceği bir excel yüklü olmaması. Bu durumda iş parçalı olarak küçük excel'lere atılarak yapıloyor sonra bu exceller analiz için başka satır sınırı olmayan excelde birleştiriliyor bayağı uzun bir angarya.

Bu gün bir den bir ampul yandı kafamda. Ya dedim bu sql lite mssql ile bir bağlantı kuramazmı. Hemen karşıma olabileceğine dair linkler geldi. Bu linkteki adımları tek tek anlatmayacağım. Böyle böyle bir şeye ihtiyaç duyarsanız sizde bu adımları uygulayabilirsiniz.

http://www.mssqltips.com/sqlservertip/3087/creating-a-sql-server-linked-server-to-sqlite-to-import-data/

Öncelikle bir odbc driver kurmanız gerekiyor

http://www.ch-werner.de/sqliteodbc/

Sonra bu odbc driver'a konuda bahsedildiği gibi SystemDSN altına Add işlemiş kurduğunuz SQLLite 3 driver'ını kullanarak database'iniz bağlıyorsunuz.

Ardından sql server'a linked server olarak tanımlıyorsunuz.

USE [master]
GO
EXEC sp_addlinkedserver 
   @server = 'Mobile_Phone_DB_64', -- the name you give the server in SSMS 
   @srvproduct = '', -- Can be blank but not NULL
   @provider = 'MSDASQL', 
   @datasrc = 'Mobile_Phone_DB_64' -- the name of the system dsn connection you created
GO

Daha sonra sorgulamaya başlıyorsunuz :)

Select *
from openquery(Mobile_Phone_DB_64 , 'select * from db_notes')
GO

Select * into SQLite_Data -- This creates a table
from openquery(Mobile_Phone_DB_64 , 'select * from db_notes')
GO

Bu kadar basit.

İyi çalışmalar.



Dosya birleştirme ( file combine )

clock Haziran 11, 2014 17:42 by author OzgurOzvaris

Değerli Arkadaşlar,

Bazen dağınık haldeki log dosyalarını veya benzer durumlarda dosyaları birbirine ekleme ihtiyacı oluşabiliyor. Eğer böyle bir durum oluşuyorsa bu yazı sizede fadalı olacaktır.

Kaynak :

Need to combine lots of files in a directory

How can I combine two files on Windows?

Yöntem 1 -

for %f in (*.txt) do type "%f" >> combined.txt

Yöntem 2 -

copy *.txt destination.txt

Yöntem 3 -

$sb = new-object System.Text.StringBuilder

foreach ($file in Get-ChildItem -path 'C:\temp\xx\') {
    $content = Get-Content -Path $file.fullname
    $sb.Append($content)
}
Out-File -FilePath 'C:\temp\xx\c.txt' -InputObject $sb.toString()

Daha bir çok yöntem internette anlatılıyor. Ben bir kaç tanesini yazdım. Kendim 1. yöntemle sorunumu halletim.

İyi çalışmalar. 



MSSQL Multi core kullanımı

clock Haziran 11, 2014 13:02 by author OzgurOzvaris

Değerli arkdaşlar ,

Microsoft SQL ile ilgili önemli sorunlarda bir taneside multicore'a karşılık performans artışı sorusu. Bu soru dipsiz bir kuyu gibi. En azından cpu lara tam erişebiliyormuyuz derseniz şu sorguyu kullanabilirsiniz.

Kaynak :

How many CPU cores can SQL Server use?

SQL SERVER – Measure CPU Pressure – CPU Business

Sql kaç cpu görüyor

select cpu_count from sys.dm_os_sys_info

Bu cpu lardan kaçı aktif durumda

select scheduler_id,cpu_id, status, is_online from sys.dm_os_schedulers where status='VISIBLE ONLINE'

Bu cpu'lar üzerindeki iş yükü nedir

SELECT
scheduler_id,
cpu_id,
current_tasks_count,
runnable_tasks_count,
current_workers_count,
active_workers_count,
work_queue_count,
pending_disk_io_count
FROM sys.dm_os_schedulers
WHERE scheduler_id < 255;

İyi çalışmlalar.



iis7 internet exploerer 11 problemi

clock Haziran 9, 2014 14:27 by author OzgurOzvaris

Değerli Arkadaşlar,

Artık kesinleşti iis 7 de bir şeyler kurmadığınız taktirde ie11 desteklenmiyor. Bulabildiğin en kestirme yol Ekim 2013 tarihli şimdi linkini paylaşacağım .Net Update patchi.

http://support.microsoft.com/kb/2836939/en

Herkese iyi çalışmalar.



Plan Caching in SQL Server 2008, Forcing Query Plans

clock Haziran 4, 2014 11:05 by author OzgurOzvaris

Değerli Arkadaşlar,

Bu aralar sql performansı ile uğraştığımdan bahsetmiştim.

"Çok sayıda çalışan bir sorgunuz varsa herşey sorundur demektir."  Özgür Özvarış :) 04/06/2014

Kaynak

Plan Caching in SQL Server 2008

Forcing Query Plans

How to determine what is compiling in SQL Server

Amacımız çok çalışan sorgumuzun herseferinde çalışma planın derlenmesini engellemek. Şimdi birilerinin stored procedur yapın dediğini duyar gibiyim :) Ama bu sorgumuz o kadar zorlu bir sorguki araya giren where conditionları stored procedure dahi olsa yapıyı bozuyor.

Süreç uzun çalışan sorgularımda çok uzun compile süreleri görmemle başladı. Daha sonra How to determin what is compilin in SQL Server makalesinde söylendiği üzere profiler kriterlerme Perfomance aldınaki fieldları eklediğimde gerçekten her sorgumun ciddi manada derlendiğini gördüm. Şimdi sıra derlenmesi engellemek Plan Caching makalesinde geçen derlemelerin caclenmesi ve reuse edilmesi mevzuna geldi. Ancak sorgumuzu parametrik yamaktansa çok çalışan iki case için exceution planı force etmek daha çok işimizde geldi. Bizde Forcing Query Planda söylenen yöntem ile bu iki sorgu case'imizi force etmeye karar verdik.

Olurda force etmek isterseniz Quary Analizerdan excecution planla sorgunuzu çalıştırın. Save As XML deyin. direk makaledeki gibi eklemeyin içindeki iki yeri düzelmeniz gerekiyor Öncelikle ' karakterlerinin '' (iki tek tırnak yanyana) replace işlemini yapın. Ardından "StmtSimple" nodundaki "StatementText" Fieldını temizleyin şimdi sorunsuz eklenecektir.

İyi çalışmalar.

 

 



Mssql Lock Listesini alma

clock Haziran 3, 2014 12:58 by author OzgurOzvaris

Değerli arkadaşlar,

Bu aralar query performansla yine başım dertte. Yaklaşık olarak günlük 100000 adet alınan bir sorgunun optimize edilmesi ile uğraşıyorum. Şimdi sırada lock olan tablo vamı onları kontrol etmek geldi.

Kaynak :

Finding out which locks that are acquired in a query on SQL Server?

Understanding Locking in SQL Server

Where DeadLock details are stored in SQL Server 3 tane link vermiş güzeller

Deadlock bulamadım şimdilik. Ancak aşağıda verdiğim sorguyu çalıştırınca iki tablomda with(nolock) demediğimi buldum.

select 'Locks' as Locks,
    spid, nt_username, name, hostname, loginame, waittime, open_tran,
    last_batch, convert(varchar ,getdate() - last_batch, 114) as TimeSinceLastCommand,
    case req_mode
    when  0 then 'Not granted'
    when  1 then 'Schema stability'
    when  2 then 'Schema modification'
    when  3 then 'Intent shared'
    when  4 then 'Shared intent update'
    when  5 then 'Intent shared shared'
    when  6 then 'Intent exclusive'
    when  7 then 'Shared Intent Exclusive'
    when  8 then 'Shared'
    when  9 then 'Update'
    when 10 then 'Intent insert NULL'
    when 11 then 'Intent shared exclusive'
    when 12 then 'Intent update'
    when 13 then 'Intent shared-update'
    when 14 then 'Exclusive'
    when 15 then 'Bulk operation'
    else str(req_mode) end as LockMode
from master..syslockinfo
    left join sysobjects so on so.id = rsc_objid
    left join master..sysprocesses sp on sp.spid = req_spid
--where rsc_dbid = (select db_id()) and ltrim(req_mode) in (6,7,11,14)

Bu konuda birşeyler buldukça paylaşmaya devam edeceğim.

 

bu sorgu bu konuda baya işime yaradı.

 

 



MSSQL Çok satırlı delete

clock Mayıs 19, 2014 17:52 by author OzgurOzvaris

Merhaba arkadaşlar,

Hatırlarsanız daha önce benzer bir konuyu update için paylaşmıştık.

MSSQL Çok satırlı update

Aynı şekilde yine delete edilen her kayıdın loglanması, log şişmesine ve hdd nin dolmasına neden oluyor. Fakat bir önceki update sorunundan farklı bir durum ile karşı karşıyayız. Update sorununda id ler sıralı olduğu için id leri her 50000 de bir logları temizliyorduk ama bu sefer kayıtlar id'ye göre değil. Bu nedenle cursor yöntemi kullandık.

DECLARE @iPK_ID int

DECLARE @itmpCount int

set @itmpCount = 0


DECLARE CURGETTABLESIZE CURSOR FOR  SELECT  PK_ID FROM TableName  where TARIH < convert(datetime,'01/01/14',3)  

 OPEN CURGETTABLESIZE 
 
 FETCH NEXT FROM CURGETTABLESIZE  INTO @iPK_ID
 
 WHILE @@FETCH_STATUS = 0   BEGIN
 
 DELETE FROM TableName WHERE PK_ID = @iPK_ID
 
 Print cast ( @iPK_ID as varchar(5)) + '-' + cast ( @itmpCount as varchar(5))
 
 set @itmpCount = @itmpCount + 1 
 
 if (@itmpCount = 50000)
 begin
   set @itmpCount  = 0
   Print '------------------------------------------------------'
   DBCC SHRINKDATABASE (DB, 10); 
 end
 
 FETCH NEXT FROM CURGETTABLESIZE INTO @iPK_ID  
 
 END  
 
 CLOSE CURGETTABLESIZE   
 
 DEALLOCATE CURGETTABLESIZE

İyi çalışmalar



Hakkımızda  AboneOl 

Blog Yayınımıza Hoşgeldiniz.

Month List

RecentPosts

Sign In