Jump to content

Blogs

SQL Lehçeleri

SQL (Structured Query Language), veritabanlarıyla etkileşim kurmak için kullanılan standart bir dildir. Ancak, birçok veritabanı yönetim sistemi (DBMS), belirli özellikler, işlevler veya optimize edilmiş performans için standart SQL'e özgün varyasyonlar veya genişlemeler ekler. Bu varyasyonlara "SQL lehçeleri" (SQL Dialects) denir. İşte bazı yaygın SQL lehçeleri ve bunların karakteristik özellikleri: 1. Transact-SQL (T-SQL) DBMS: Microsoft SQL Server Özellikleri: T-SQL, prosedürel

SQL Standardının Tarihçesi

SQL (Structured Query Language), veritabanlarında veri sorgulama, oluşturma ve düzenleme işlemleri için kullanılan bir dildir. SQL standardının tarihi, birkaç önemli aşamadan oluşur ve bu standart, zaman içinde birçok değişiklik ve genişleme görmüştür. 1. İlk Başlangıç - 1970'ler 1974: IBM'de çalışan Donald Chamberlin ve Raymond Boyce, sorguları basit bir şekilde ifade etmek için bir dili tasarlamak amacıyla SEQUEL (Structured English Query Language) projesine başladılar. Bu dil, daha

MySQL'in Disk Üzerinde Takas Yapması (Swapping)

MySQL'in disk üzerinde takas yapması (swapping), işletim sisteminin yetersiz bellek durumunda disk alanını kullanarak RAM'deki verileri geçici olarak saklaması durumudur. Takas, bellekteki verilerin disk üzerindeki bir takas alanına (swap space) yazılmasını, ardından gerektiğinde geri okunmasını içerir. MySQL için disk takası, genellikle performans sorunlarına yol açar çünkü disk erişimi, RAM'e erişimden çok daha yavaştır. Bu, veritabanı sorgularının önemli ölçüde yavaşlamasına neden olabil

MySQL'de Yavaş Sorgu Günlüğü (Slow Query Log)

Yavaş Sorgu Günlüğü (Slow Query Log), MySQL'de belirli bir süreden daha uzun süren sorguların günlüğünü tutar. Bu günlük, yavaş ve potansiyel olarak optimize edilmesi gereken sorguları belirlemek için çok yararlı olabilir. İşte yavaş sorgu günlüğünü etkinleştirmek ve performansı izlemek için bir yol: 1. Yavaş Sorgu Günlüğünü Etkinleştirme Yavaş sorgu günlüğünü etkinleştirmek için, MySQL yapılandırma dosyasında (my.cnf veya my.ini) aşağıdaki ayarları yapın: [mysqld] slow_query_log =

MySQL’in Performans Şeması

MySQL’in Performans Şeması, sunucunun performansına dair ayrıntılı istatistikler toplamak için kullanılan bir depolama motorudur. Performans Şeması, sorguların yürütülme sürelerinden, beklemelerden, bellek kullanımına kadar bir dizi metriği izlemenize olanak tanır. İşte nasıl kullanılacağına dair bir rehber: 1. Performans Şemasını Etkinleştir Performans Şeması'nı etkinleştirmek için, MySQL yapılandırma dosyası (my.cnf veya my.ini) içinde aşağıdaki satırı bulun: [mysqld] performance_

MySQL işlemcisinin Yüksek Kullanımını Tespit Etmek

MySQL işlemcisinin yüksek kullanımını tespit etmek, sorguların zayıf optimize edilmesi, yetersiz donanım veya yanlış yapılandırılmış ayarlar gibi çeşitli sorunların göstergesi olabilir. Bu sorunları tespit ve çözmek, sistemi izlemeyi, günlükleri incelemeyi ve muhtemelen sorguları ve yapılandırmaları optimize etmeyi içerir. MySQL işlemcisinin yüksek kullanımını tespit etmek için adım adım bir rehber: 1. Sistem Kaynaklarını İzle Sistem Araçlarını Kullan: top, htop veya Windows'ta Gö

MySQL'de Thread Cache

MySQL'de thread cache, bağlantılar için kullanılan iş parçacığı (thread) nesnelerini yeniden kullanmak üzere saklamak amacıyla kullanılan bir önbellek sistemidir. İş parçacığı önbelleği, özellikle yüksek bağlantı oranları olan senaryolarda, iş parçacığı oluşturma ve yok etme maliyetlerini azaltmaya yardımcı olur. İşte thread cache'in nasıl çalıştığına dair bazı anahtar noktalar: İş Parçacığı Yeniden Kullanımı: Bir istemci bağlantısı kapanırken, iş parçacığı önbelleğe eklenir. Bir sonra

InnoDB Buffer Pool

InnoDB buffer pool, MySQL'in InnoDB depolama motorunun performansını artırmak için kullanılan bir bellek alanıdır. Veri ve indekslerin diskten belleğe yüklenip saklandığı bir ara önbellektir. Sıkça erişilen veri ve indekslerin bellekte tutulması, disk erişimine olan ihtiyacı azaltır ve sorguların çok daha hızlı çalışmasına olanak tanır. İşte InnoDB buffer pool'un ana özellikleri: Veri ve İndeks Önbellekleme: Buffer pool, en sık kullanılan veri sayfaları ve indeksleri bellekte saklar. Bu, di

MySQL'de EXPLAIN Komutu

MySQL'de EXPLAIN komutu, bir SQL sorgusunun nasıl çalıştırılacağı hakkında detaylı bilgi sağlar. Bu, sorgunun performansını anlamak, optimize etmek ve potansiyel sorunları belirlemek için çok yararlı olabilir. İşte EXPLAIN komutunun bazı yaygın seçenekleri: EXPLAIN: Temel kullanımı, belirli bir SELECT sorgusunun yürütme planını gösterir. EXPLAIN SELECT * FROM employees WHERE department_id = 5; EXPLAIN FORMAT=JSON: Sonucu JSON formatında döndürür, daha detaylı bilgi sağlar. EXPLAIN

MySQL'in En Yaygın Dosya Türleri ve Uzantıları

MySQL veritabanı sisteminde, verilerin ve metadatanın fiziksel olarak saklandığı çeşitli dosya türleri vardır. Bunlar genellikle, veritabanının yapılandırma dosyasında belirtilen datadir dizininde bulunur. İşte MySQL'in en yaygın dosya türleri ve uzantıları: MyISAM Tablo Dosyaları: .frm - Tablo yapısı ile ilgili bilgileri içerir. .MYD - MyISAM tablosundaki veri dosyası. .MYI - MyISAM tablosundaki indeks dosyası. InnoDB Tablo Dosyaları: .frm - Tablo yapısı bilgilerin

INFORMATION_SCHEMA veritabanı

INFORMATION_SCHEMA veritabanı, bir veritabanı yönetim sisteminin (DBMS) iç yapısına dair metaveri veya bilgi sağlayan özel bir şemadır. Bu şema, SQL standardının bir parçasıdır ve birçok modern DBMS, bu standardı destekler, MySQL dahil. INFORMATION_SCHEMA içinde, veritabanı şemaları, tablolar, sütunlar, indeksler, izinler, yabancı anahtarlar ve diğer veritabanı nesneleri hakkında bilgi içeren bir dizi görünüm bulunur. Bu görünümler, veritabanı içeriğine değil, yapısına yöneliktir, yani veri

Global Data Dictionary (GDD)

Global Data Dictionary (GDD), bir veritabanı yönetim sisteminde (DBMS) veritabanının kendisine ilişkin tüm bilgileri ve detayları saklayan merkezi bir depodur. MySQL 8.0'da tanıtılan Global Data Dictionary, önceki sürümlerde metadatayı yönetmek için kullanılan dosya tabanlı yaklaşımın yerini almıştır. Global Data Dictionary'nin özellikleri şunlardır: Metadatanın Merkezileştirilmesi: GDD, tablolar, indeksler, sütunlar, prosedürler, tetikleyiciler gibi tüm veritabanı nesneleri hakkında b

MySQL 8'in Yeni Özellikleri

MySQL 8, 2018 yılında yayınlandığında birçok yeni özellik ve iyileştirme getirdi. İşte MySQL 8'in bazı önemli yeni özellikleri: Data Dictionary: MySQL 8, metadatayı saklamak için kendi içsel veritabanı olan yeni bir veri sözlüğü sunuyor. Bu, daha önceki sürümlerde kullanılan FRM, TRG gibi dosya tabanlı sistemlerin yerine geçiyor ve performans artışına katkı sağlıyor. Atomic DDL (Data Definition Language) İşlemleri: Bu, bir veritabanı şemasında değişiklik yaparken işlemin daha güvenli o

Round-Robin (RR) Planlayıcı Algoritması

Round-Robin (RR) planlayıcısı, işletim sistemlerinde kullanılan bir zaman paylaşım algoritmasıdır. RR, işlerin veya iş parçacıklarının (threads) eşit ve adil bir şekilde zaman dilimlerine ayrılmasını sağlar. Her iş ya da iş parçacığı, sırayla belirli bir zaman dilimi (genellikle birkaç milisaniye kadar) boyunca CPU zamanına erişir. Round-Robin algoritması aşağıdaki şekilde çalışır: Zaman Dilimi Atama: Planlayıcı, her işe eşit bir zaman dilimi atar (örneğin, 10 milisaniye). İşlerin

Dairesel Bağlı Liste (Circularly Linked List)

Dairesel bağlı liste (Circularly Linked List), her düğümün bir sonraki düğüme bir referansını içerdiği ve son düğümün de başlangıç düğümüne referans verdiği bir bağlı liste türüdür. Bu, listede dairesel bir yapı oluşturur, böylece listenin sonundan başına geçiş yapabilirsiniz. Dairesel bağlı listeler, genellikle uygulamalarda düzenli bir şekilde bir liste üzerinde dönülmesi gerektiğinde kullanılır. Örneğin, bir oyun içindeki karakterler arasında dönerken veya bir çalma listesi içinde şarkıl

Tek Bağlantılı Liste ile Kuyruk Uygulama

Kuyruk (queue), ilk giren ilk çıkar (First-In-First-Out veya FIFO) prensibine göre çalışan bir veri yapısıdır. Bu, bir kuyruğa eklenen ilk öğenin, aynı zamanda kuyruktan çıkarılan ilk öğe olacağı anlamına gelir. Tek yönlü bağlı bir liste kullanarak bir kuyruk uygulamak da mümkündür. Baş düğüm, kuyruğun önünü temsil eder, ve son düğüm, kuyruğun sonunu temsil eder. Kuyruk İmplementasyonu class Node: def __init__(self, data=None): self.data = data self.next = None

Tek Bağlantılı Listeyle Yığın Uygulama

Yığıt (stack), son giren ilk çıkar (Last-In-First-Out veya LIFO) prensibine göre çalışan bir veri yapısıdır. Bir yığıt, iki ana işlemi destekler: push, bir öğeyi yığına ekler, ve pop, yığından bir öğeyi çıkarır. Tek yönlü bağlı bir liste kullanarak bir yığıt uygulamak oldukça basittir. Baş düğüm, yığının en üstündeki öğeyi temsil eder, ve bu, push ve pop işlemlerinin hızlı bir şekilde gerçekleştirilmesini sağlar. Yığıt İmplementasyonu class Node: def __init__(self, data=None):

Tek Yönlü Bağlı Bir listeye Öğe İşlemleri

Tek yönlü bağlı bir listenin başına bir öğe eklemek, genellikle oldukça hızlı ve basit bir işlemdir. Bu işlem, genellikle O(1) zaman karmaşıklığına sahiptir çünkü başa ekleme işlemi sabit sayıda adımda gerçekleştirilir. Bağlı listenin başına bir öğe eklemek için aşağıdaki adımlar izlenir: Yeni Düğüm Oluştur: İlk olarak, listenin başına eklemek istediğiniz değeri içeren yeni bir düğüm oluşturmalısınız. Yeni Düğümün Referansını Ayarla: Yeni düğümün next referansını, şu anki baş düğü

Tek Yönlü Bağlı Listeler (Singly Linked Lists)

Tek yönlü bağlı listeler (singly linked lists) hakkında daha ayrıntılı bir açıklama yapacağım. Tek yönlü bağlı liste, düğümlerin birbirine yalnızca bir yönde bağlandığı bir veri yapısıdır. Her düğüm, bir veri öğesi ve sonraki düğüme işaret eden bir referans içerir. Son düğüm, genellikle NULL referansına sahip olur, bu liste sonunun işaretçisidir. Tek Yönlü Bağlı Liste Yapısı: Düğüm (Node): Veri ve sonraki düğüme işaret eden bir referans içerir. Baş Düğüm (Head): Listenin ilk

Bağlı listeler (Linked Lists)

Bağlı listeler, düğümlerden (nodes) oluşan bir veri yapısıdır. Her düğüm, bir veri alanı ve bir sonraki düğümün referansını içerir. İlk düğüme başlangıç düğümü denir, son düğüm ise genellikle NULL referansına sahip olur. İşte bağlı listelerin temel özellikleri ve bileşenleri: Düğüm (Node): Bir düğüm, genellikle iki bileşen içerir: bir veri kısmı ve bir sonraki düğümün referansı. Baş Düğüm (Head): Listenin ilk düğümüne baş düğüm denir. Baş düğümü bilindiği sürece, listedeki diğer d

Python'da Collections Modülündeki deque Sınıfı

Python'da collections modülündeki deque sınıfı, çift uçlu kuyruk (double-ended queue) veri yapısını etkili bir şekilde uygulamanıza olanak tanır. Deque Nedir? Deque (Double-Ended Queue), her iki ucundan da ekleme ve çıkarma işlemlerinin yapılabildiği bir veri yapısıdır. Bu, deque'nin hem yığıt (stack) hem de kuyruk (queue) olarak kullanılmasına olanak tanır. Python'da Deque Kullanımı collections modülünden deque'yi içe aktararak başlayabilirsiniz: from collections import d

Çift Uçlu Kuyruklar

Double-Ended Queues (Çift Uçlu Kuyruklar), veya genellikle "deque" olarak adlandırılan veri yapısı, her iki ucunda da ekleme ve çıkarma işlemlerinin yapılabildiği bir kuyruk türüdür. Bu, deque'nin daha esnek bir veri yapısı olmasını sağlar, çünkü hem kuyruk (FIFO - First-In, First-Out) hem de yığıt (LIFO - Last-In, First-Out) olarak kullanılabilir. Deque İşlemleri: Append (Ekleme): Deque'nin sağ ucuna bir öğe ekler. Append Left (Sol Tarafa Ekleme): Deque'nin sol ucuna bir öğe ekle

Shrinking the Underlying Array (Altta Yatan Diziyi Küçültme)

"Shrinking the Underlying Array" (Altta Yatan Diziyi Küçültme), bir veri yapısının (örneğin bir dizi listesi veya kuyruk) kullanmadığı belleği serbest bırakmak için kullanılan bir tekniktir. Bu yaklaşım, gereksiz bellek kullanımını en aza indirmek ve dolayısıyla daha etkili bir bellek yönetimi sağlamak için kullanılır. Neden Gerekli? Bir veri yapısı içindeki öğeler çıkarıldıkça, kullanılmayan bir alan oluşabilir. Bu durum, kullanmadığınız bellek alanı kapladığından, gereksiz bir yük ol

×
×
  • Create New...