### 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
[mysqld]
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!