{"id":203,"title":"SQL Notlar\u0131:  Y\u00f6netim ve Performans Ayarlar\u0131","content":"<p>### MySQL Y\u00f6netimi ve Performans Ayarlar\u0131<\/p><p>MySQL veritaban\u0131 y\u00f6netimi, performans ayarlar\u0131 ve g\u00fcvenlik konular\u0131, \u00f6zellikle b\u00fcy\u00fck \u00f6l\u00e7ekli uygulamalarda kritik \u00f6neme sahiptir. Bu yaz\u0131da, MySQL y\u00f6netimi, tetikleyiciler (triggers) ve performans ayarlar\u0131 gibi konular\u0131 ele alaca\u011f\u0131z.<\/p><p>#### 1. Atomik Tablo Yeniden Adland\u0131rma ve Yeniden Y\u00fckleme<\/p><p>Tablo yeniden adland\u0131rma i\u015flemi, di\u011fer oturumlar\u0131n tablolara eri\u015fimini engeller ve bu nedenle e\u015fzamanl\u0131l\u0131k sorunlar\u0131na neden olmaz. A\u015fa\u011f\u0131daki \u00f6rnekte, bir tablo atomik olarak yeniden adland\u0131r\u0131l\u0131r ve yeniden y\u00fcklenir:<\/p><p>```sql<br>CREATE TABLE new LIKE real;<br>-- Yeni tabloya veri y\u00fckleme i\u015flemleri (LOAD DATA, INSERT, vb.)<br>RENAME TABLE real TO old, new TO real;<br>DROP TABLE old;<br>```<\/p><p>Bu i\u015flem, tablonun tamamen yeniden y\u00fcklenmesini sa\u011flar ve eski tablo silinir.<\/p><p>#### 2. Root \u015eifresini De\u011fi\u015ftirme<\/p><p>MySQL root kullan\u0131c\u0131s\u0131n\u0131n \u015fifresini de\u011fi\u015ftirmek i\u00e7in `mysqladmin` komutu kullan\u0131l\u0131r:<\/p><p>```bash<br>mysqladmin -u root -p'old-password' password 'new-password'<br>```<\/p><p>#### 3. Veritaban\u0131n\u0131 Silme<\/p><p>Bir veritaban\u0131n\u0131 silmek i\u00e7in `DROP DATABASE` komutu kullan\u0131l\u0131r. Bu i\u015flem, veritaban\u0131ndaki t\u00fcm tablolar\u0131 ve verileri kal\u0131c\u0131 olarak siler:<\/p><p>```sql<br>DROP DATABASE database_name;<br>```<\/p><p>Veya:<\/p><p>```sql<br>DROP SCHEMA database_name;<br>```<\/p><p>#### 4. Tetikleyiciler (Triggers)<\/p><p>Tetikleyiciler, belirli bir tabloda ger\u00e7ekle\u015fen olaylara (INSERT, UPDATE, DELETE) otomatik olarak tepki veren yap\u0131lard\u0131r.<\/p><p>##### \u00d6rnek: Basit Tetikleyici Olu\u015fturma<\/p><p>A\u015fa\u011f\u0131daki \u00f6rnekte, `account` tablosuna bir kay\u0131t eklendi\u011finde toplam tutar\u0131 hesaplayan bir tetikleyici olu\u015fturulmu\u015ftur:<\/p><p>```sql<br>CREATE TABLE account (acct_num INT, amount DECIMAL(10,2));<\/p><p>CREATE TRIGGER ins_sum BEFORE INSERT ON account<br>FOR EACH ROW SET @sum = @sum + NEW.amount;<\/p><p>SET @sum = 0;<br>INSERT INTO account VALUES(137,14.98),(141,1937.50),(97,-100.00);<br>SELECT @sum AS 'Total amount inserted';<br>```<\/p><p>**Sonu\u00e7:**<br>```<br>+---+<br>| Total amount inserted |<br>+---+<br>| 1852.48 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;|<br>+---+<br>```<\/p><p>##### Tetikleyici T\u00fcrleri<\/p><p>- **BEFORE INSERT**: Kay\u0131t eklenmeden \u00f6nce tetiklenir.<br>- **BEFORE UPDATE**: Kay\u0131t g\u00fcncellenmeden \u00f6nce tetiklenir.<br>- **AFTER DELETE**: Kay\u0131t silindikten sonra tetiklenir.<\/p><p>##### \u00d6rnek: BEFORE INSERT Tetikleyici<\/p><p>```sql<br>DELIMITER $$<\/p><p>CREATE TRIGGER insert_date<br>&nbsp; &nbsp;BEFORE INSERT ON stack<br>&nbsp; &nbsp;FOR EACH ROW<br>BEGIN<br>&nbsp; &nbsp;SET NEW.insert_date = NOW();<br>END;<\/p><p>$$ DELIMITER ;<br>```<\/p><p>#### 5. InnoDB Performans Ayarlar\u0131<\/p><p>InnoDB, MySQL'in varsay\u0131lan depolama motorudur ve performans ayarlar\u0131, \u00f6zellikle b\u00fcy\u00fck veritabanlar\u0131 i\u00e7in kritik \u00f6neme sahiptir.<\/p><p>##### \u00d6rnek: InnoDB Performans Ayarlar\u0131<\/p><p>```ini<br><br>innodb_buffer_pool_size = 10G &nbsp;# Kullan\u0131labilir RAM'in %70'i<br>innodb_file_per_table = 1<br>innodb_flush_neighbors = 0<br>innodb_thread_concurrency = 0<br>innodb_read_io_threads = 64<br>innodb_write_io_threads = 64<br>innodb_io_capacity = 2580<br>innodb_io_capacity_max = 3800<br>```<\/p><p>- **innodb_buffer_pool_size**: InnoDB i\u00e7in \u00f6nbellek boyutunu belirler. Genellikle kullan\u0131labilir RAM'in %70'i olarak ayarlan\u0131r.<br>- **innodb_file_per_table**: Her tablo i\u00e7in ayr\u0131 dosya olu\u015fturur.<br>- **innodb_flush_neighbors**: SSD'ler i\u00e7in bu ayar genellikle 0 olarak ayarlan\u0131r.<\/p><p>#### 6. G\u00fcvenli MySQL \u015eifreleme<\/p><p>Varsay\u0131lan \u015fifreleme modu olan `aes-128-ecb` g\u00fcvenli de\u011fildir. Daha g\u00fcvenli bir \u015fifreleme modu kullanmak i\u00e7in:<\/p><p>```ini<br>block_encryption_mode = aes-256-cbc<br>```<\/p><p>#### Sonu\u00e7<\/p><p>MySQL y\u00f6netimi, performans ayarlar\u0131 ve tetikleyiciler, veritaban\u0131 uygulamalar\u0131n\u0131n verimli ve g\u00fcvenli bir \u015fekilde \u00e7al\u0131\u015fmas\u0131n\u0131 sa\u011flar. Bu ayarlar\u0131 ve y\u00f6ntemleri kullanarak, MySQL veritaban\u0131n\u0131z\u0131 daha iyi y\u00f6netebilir ve performans\u0131n\u0131 art\u0131rabilirsiniz. Bir sonraki yaz\u0131da g\u00f6r\u00fc\u015fmek \u00fczere!<\/p>","excerpt":"MySQL veritaban\u0131 y\u00f6netimi, performans ayarlar\u0131 ve g\u00fcvenlik konular\u0131, \u00f6zellikle b\u00fcy\u00fck \u00f6l\u00e7ekli uygulamalarda kritik \u00f6neme sahiptir. Bu yaz\u0131da, MySQL y\u00f6netimi, tetikleyiciler (triggers) ve performans ayarlar\u0131 gibi konular\u0131 ele alaca\u011f\u0131z.","created_at":"2025-01-13 15:33:59","updated_at":"2026-09-06 07:30:36","category_id":9,"view_count":548,"reading_time":3,"status":"published","editor_choice":0,"is_editor_choice":0,"published_at":"2025-01-13 15:33:59","featured_image":"resimyok.jpg","slug":"sql-notlari-yonetim-ve-performans-ayarlari","category_name":"Yaz\u0131l\u0131m","category_slug":"yazilim","category_color":"#ef4444"}