Linux üzerine SQL Server Kurulumu

Bu sene Microsoft Connect etkinliğinde bir çok yeni özellik paylaşıldı. Bunlardan bazıları aşağıdadır.

  • Visual Studio for Mac tanıtıldı.
  • Visual Studio 2017 RC oldu.
  • Visual Studio TFS 2017 RTM oldu.
  • Microsoft Linux Foundation Platinium üyesi oldu
  • Samsung ile beraber çalışılarak .NET Tizen’e taşınacak.
  • SQL server linuxa geldi.

Aslında bu yazımda da ben en son yazdığım maddeye değineceğim. SQL server linuxta kullanılmaya başlandı. Ben de bu yazımda azure üzerinde deploy ettiğim ubuntu 16.10 üzerine sql server kurulumu nasıl yapılır? nasıl db oluşturulur? sorgular nasıldır gibi konulara değineceğim

SQL Server kurulumu

Öncelikle ben putty kullanacağım buradan indirebilirsiniz.

Öncelikle repositoryimizi ekliyoruz.

2. adım olarak Microsoft SQL Server Ubuntu repositorysini etkinleştiriyoruz.

3. adımda SQL serverimizi yüklüyoruz.

4. adım

5. adımda sql serveri başlatıyoruz.

1

Bazı toolların yüklenmesi

  1. superuser olarak giriş yapıyoruz.
2.Microsoft Red Hat repositoryi indiriyoruz.
3.superuser dan çıkıyoruz.
4. mssql-tools yüklemesi
5.
6.
7.
 

SQL Server’a bağlanma

Eğer başka bir makineye bağlanacaksanız aşağıdaki gibidir
 

SQL Server on Linux üzerinde sorgu çalıştırmak

Tüm dbleri görüntülemek istersek aşağıdaki gibidir

2

Yeni db oluşturmak için ise

 

Tablo oluşurmak için

 

Yukarıda oluşturduğumuz tabloya data eklemek için

select komutu

3

 

db silme işlemi

 

C# Multi Thread Programlama

C#’ın multi thread sistemi Thread sınıfı üzerine kurulmuştur. Thread sınıfı sealedtır. Yani kalıtım yoluyla aktarılamaz.

 

Bir thread oluşturma

Çıktı:

thread 1başladı
sayac:0
sayac:1
sayac:2
sayac:3
sayac:4
thread 1 bitti

Birden fazla thread oluşturma

Aşağıdaki şekilde değiştirip çalıştırdığımızda iki çocuk kanal aynı CPU’yu paylaşmaktadır. İşletim sistemine ve bazı çevresel etmenlere bağlı olarak çıktılarımız farklılık gösterebilir.

Çıktı:

thread 1başladı
thread 2başladı
thread 2sayac:0
thread 1sayac:0
thread 2sayac:1
thread 1sayac:1
thread 2sayac:2
thread 1sayac:2
thread 2sayac:3
thread 1sayac:3
thread 2sayac:4
thread 2 bitti
thread 1sayac:4
thread 1 bitti

 

Bir threadın ne zaman sona ereceğini belirlemek

Bir threadın ne zaman sona ereceğini bilmek önemlidir. C# ta “Join()” kullanarak çağrıldığı kanalın sona erip ermediğini öğrenebiliriz. Örnek kod ve çıktısı aşağıdadır.

Çıktı:

thread 1başladı
thread 2başladı
thread 3başladı
thread 3sayac:0
thread 1sayac:0
thread 2sayac:0
thread 3sayac:1
thread 1sayac:1
thread 2sayac:1
thread 3sayac:2
thread 1sayac:2
thread 2sayac:2
thread 3sayac:3
thread 1sayac:3
thread 2sayac:3
thread 3sayac:4
thread 3 bitti
thread 1sayac:4
thread 1 bitti
thread1 join
thread 2sayac:4
thread 2 bitti
thread2 join
thread3 join

Thread öncelikleri

Her thread bir önceliğe sahiptir. Bir threadın önceliği CPU’da ne kadar çalışacağını belirler. Düşük öncelikli threadler daha az CPU zamanı harcarlar. Burada dikkat etmemiz gereken şey ise bir threadın CPU’da harcayacağı zaman sadece thread önceliğine bağlı değildir. Örnek vermek gerekirse CPU’da çalışan yüksek öncelikli bir thread bir kaynağı bekliyorsa(klavye girişi,IO işlemleri) o thread bloke edilecek daha düşük öncelikli başka bir thread çalışacaktır. Böylece düşük öncelikli bir thread daha yüksek öncelikli bir threade göre daha fazla CPU zamanı kullanmış olacaktır. C# dilinde bir thredin önceliği ThreadPriority özelliği ile ayarlanabilir.

adsiz

Örnek üzerinde inceleyelim

Çıktı:

Yuksek öncelikbaşladı
Düşük öncelikbaşladı
Yuksek öncelik bitti
Düşük öncelik bitti
Yuksek önceliksayacı 1000000
Düşük önceliksayacı 980470

 

Gördüğümüz gibi yüksek öncelikli thread CPU’da daha fazla zaman kullandı.

Threadleri askıya almak ve sürdürmek

Kanalı askıya almak için Thread.Suspend() sürdürmek için ise Thread.Resume() kullanılır.

Çıktı:

thread1başladı
sayac:0
sayac:1
sayac:2
thread1 durduruldu.
thread1 devam ettirildi.
sayac:3
sayac:4
sayac:5
sayac:6
sayac:7
sayac:8
sayac:9
thread1 bitti