İçindekiler

    Yazıyı Dinle

    Hazır
    Tarayıcınızın yerleşik ses sentezi özelliğini kullanır.

    Yazı Boyutu

    Küçük Aa
    Normal Aa
    Büyük Aa
    Çok Büyük Aa

    Kaydet

    📑

    Bu makaleyi daha sonra okumak için kaydedin

    SQL Notları: Yönetim ve Performans Ayarları

    Yazıyı dinlemek için oynat butonuna tıklayın

    ### MySQL Yönetimi ve Performans Ayarları

    MySQL veritabanı yönetimi, performans ayarları ve güvenlik konuları, özellikle büyük ölçekli uygulamalarda kritik öneme sahiptir. Bu yazıda, MySQL yönetimi, tetikleyiciler (triggers) ve performans ayarları gibi konuları ele alacağız.

    #### 1. Atomik Tablo Yeniden Adlandırma ve Yeniden Yükleme

    Tablo yeniden adlandırma işlemi, diğer oturumların tablolara erişimini engeller ve bu nedenle eşzamanlılık sorunlarına neden olmaz. Aşağıdaki örnekte, bir tablo atomik olarak yeniden adlandırılır ve yeniden yüklenir:

    ```sql
    CREATE TABLE new LIKE real;
    -- Yeni tabloya veri yükleme işlemleri (LOAD DATA, INSERT, vb.)
    RENAME TABLE real TO old, new TO real;
    DROP TABLE old;
    ```

    Bu işlem, tablonun tamamen yeniden yüklenmesini sağlar ve eski tablo silinir.

    #### 2. Root Şifresini Değiştirme

    MySQL root kullanıcısının şifresini değiştirmek için `mysqladmin` komutu kullanılır:

    ```bash
    mysqladmin -u root -p'old-password' password 'new-password'
    ```

    #### 3. Veritabanını Silme

    Bir veritabanını silmek için `DROP DATABASE` komutu kullanılır. Bu işlem, veritabanındaki tüm tabloları ve verileri kalıcı olarak siler:

    ```sql
    DROP DATABASE database_name;
    ```

    Veya:

    ```sql
    DROP SCHEMA database_name;
    ```

    #### 4. Tetikleyiciler (Triggers)

    Tetikleyiciler, belirli bir tabloda gerçekleşen olaylara (INSERT, UPDATE, DELETE) otomatik olarak tepki veren yapılardır.

    ##### Örnek: Basit Tetikleyici Oluşturma

    Aşağıdaki örnekte, `account` tablosuna bir kayıt eklendiğinde toplam tutarı hesaplayan bir tetikleyici oluşturulmuştur:

    ```sql
    CREATE TABLE account (acct_num INT, amount DECIMAL(10,2));

    CREATE TRIGGER ins_sum BEFORE INSERT ON account
    FOR EACH ROW SET @sum = @sum + NEW.amount;

    SET @sum = 0;
    INSERT INTO account VALUES(137,14.98),(141,1937.50),(97,-100.00);
    SELECT @sum AS 'Total amount inserted';
    ```

    **Sonuç:**
    ```
    +---+
    | Total amount inserted |
    +---+
    | 1852.48              |
    +---+
    ```

    ##### Tetikleyici Türleri

    - **BEFORE INSERT**: Kayıt eklenmeden önce tetiklenir.
    - **BEFORE UPDATE**: Kayıt güncellenmeden önce tetiklenir.
    - **AFTER DELETE**: Kayıt silindikten sonra tetiklenir.

    ##### Örnek: BEFORE INSERT Tetikleyici

    ```sql
    DELIMITER $$

    CREATE TRIGGER insert_date
       BEFORE INSERT ON stack
       FOR EACH ROW
    BEGIN
       SET NEW.insert_date = NOW();
    END;

    $$ DELIMITER ;
    ```

    #### 5. InnoDB Performans Ayarları

    InnoDB, MySQL'in varsayılan depolama motorudur ve performans ayarları, özellikle büyük veritabanları için kritik öneme sahiptir.

    ##### Örnek: InnoDB Performans Ayarları

    ```ini

    innodb_buffer_pool_size = 10G  # Kullanılabilir RAM'in %70'i
    innodb_file_per_table = 1
    innodb_flush_neighbors = 0
    innodb_thread_concurrency = 0
    innodb_read_io_threads = 64
    innodb_write_io_threads = 64
    innodb_io_capacity = 2580
    innodb_io_capacity_max = 3800
    ```

    - **innodb_buffer_pool_size**: InnoDB için önbellek boyutunu belirler. Genellikle kullanılabilir RAM'in %70'i olarak ayarlanır.
    - **innodb_file_per_table**: Her tablo için ayrı dosya oluşturur.
    - **innodb_flush_neighbors**: SSD'ler için bu ayar genellikle 0 olarak ayarlanır.

    #### 6. Güvenli MySQL Şifreleme

    Varsayılan şifreleme modu olan `aes-128-ecb` güvenli değildir. Daha güvenli bir şifreleme modu kullanmak için:

    ```ini
    block_encryption_mode = aes-256-cbc
    ```

    #### Sonuç

    MySQL yönetimi, performans ayarları ve tetikleyiciler, veritabanı uygulamalarının verimli ve güvenli bir şekilde çalışmasını sağlar. Bu ayarları ve yöntemleri kullanarak, MySQL veritabanınızı daha iyi yönetebilir ve performansını artırabilirsiniz. Bir sonraki yazıda görüşmek üzere!

    Önceki Yazı
    SQL Notları: Events

    MySQL, tekrarlayan ve zamanlanmış görevleri otomatikleştirmek için Olaylar ...

    Sonraki Yazı
    SQL Notları: JSON Veri Türü ve İşlemleri

    MySQL 5.7.8 ve sonraki sürümler, JSON (JavaScript Object Notation) veri türü...