{"id":1358,"date":"2025-11-05T13:48:40","date_gmt":"2025-11-05T10:48:40","guid":{"rendered":"https:\/\/www.dchost.com\/blog\/woocommerce-icin-mysql-innodb-tuning-kontrol-listesi-buffer-pool-indeksleme-ve-slow-query-analizi-nasil-akillica-yapilir\/"},"modified":"2025-11-05T13:48:40","modified_gmt":"2025-11-05T10:48:40","slug":"woocommerce-icin-mysql-innodb-tuning-kontrol-listesi-buffer-pool-indeksleme-ve-slow-query-analizi-nasil-akillica-yapilir","status":"publish","type":"post","link":"https:\/\/www.dchost.com\/blog\/woocommerce-icin-mysql-innodb-tuning-kontrol-listesi-buffer-pool-indeksleme-ve-slow-query-analizi-nasil-akillica-yapilir\/","title":{"rendered":"WooCommerce i\u00e7in MySQL\/InnoDB Tuning Kontrol Listesi: Buffer Pool, \u0130ndeksleme ve Slow Query Analizi Nas\u0131l Ak\u0131ll\u0131ca Yap\u0131l\u0131r?"},"content":{"rendered":"<div class=\"dchost-blog-content-wrapper\"><div id=\"toc_container\" class=\"toc_transparent no_bullets\"><p class=\"toc_title\">\u0130&ccedil;indekiler<\/p><ul class=\"toc_list\"><li><a href=\"#Kasa_Kuyrugu_Uzadiginda_Hissettigin_O_Gerginlik_WooCommerce_ve_MySQLi_Sakinlestirme_Yolculugu\"><span class=\"toc_number toc_depth_1\">1<\/span> Kasa Kuyru\u011fu Uzad\u0131\u011f\u0131nda Hissetti\u011fin O Gerginlik: WooCommerce ve MySQL\u2019i Sakinle\u015ftirme Yolculu\u011fu<\/a><\/li><li><a href=\"#WooCommerce_Trafigi_Neden_MySQLde_Dugumlenir\"><span class=\"toc_number toc_depth_1\">2<\/span> WooCommerce Trafi\u011fi Neden MySQL\u2019de D\u00fc\u011f\u00fcmlenir?<\/a><ul><li><a href=\"#Okuma-yazma_dengesi_Sepetteki_her_tik_bir_izi_birakir\"><span class=\"toc_number toc_depth_2\">2.1<\/span> Okuma-yazma dengesi: Sepetteki her t\u0131k bir izi b\u0131rak\u0131r<\/a><\/li><li><a href=\"#Olcmeden_ayar_olmaz_Kucuk_bir_temel_fotograf_cek\"><span class=\"toc_number toc_depth_2\">2.2<\/span> \u00d6l\u00e7meden ayar olmaz: K\u00fc\u00e7\u00fck bir temel foto\u011fraf \u00e7ek<\/a><\/li><\/ul><\/li><li><a href=\"#Buffer_Pool_InnoDBnin_Nefesi_Ne_Kadar_Uzun_Olmali\"><span class=\"toc_number toc_depth_1\">3<\/span> Buffer Pool: InnoDB\u2019nin Nefesi Ne Kadar Uzun Olmal\u0131?<\/a><ul><li><a href=\"#Ne_kadar_RAM_ayirmali_Yeterince_buyuk_ama_asiri_degil_dengesi\"><span class=\"toc_number toc_depth_2\">3.1<\/span> Ne kadar RAM ay\u0131rmal\u0131? \u201cYeterince b\u00fcy\u00fck, ama a\u015f\u0131r\u0131 de\u011fil\u201d dengesi<\/a><\/li><li><a href=\"#Buffer_Pool_parcalari_arka_plan_temizlikcisi_ve_flush_duzeni\"><span class=\"toc_number toc_depth_2\">3.2<\/span> Buffer Pool par\u00e7alar\u0131, arka plan temizlik\u00e7isi ve flush d\u00fczeni<\/a><\/li><li><a href=\"#Redo_log_O_son_hamleyi_guvenli_saklama_sanati\"><span class=\"toc_number toc_depth_2\">3.3<\/span> Redo log: O son hamleyi g\u00fcvenli saklama sanat\u0131<\/a><\/li><li><a href=\"#Gecici_tablolara_kucuk_bir_bakis_tmp_table_size_ve_dostlari\"><span class=\"toc_number toc_depth_2\">3.4<\/span> Ge\u00e7ici tablolara k\u00fc\u00e7\u00fck bir bak\u0131\u015f: tmp_table_size ve dostlar\u0131<\/a><\/li><\/ul><\/li><li><a href=\"#Indeksleme_WooCommerce_Tablolarinda_Gizli_Kisayollari_Acmak\"><span class=\"toc_number toc_depth_1\">4<\/span> \u0130ndeksleme: WooCommerce Tablolar\u0131nda Gizli K\u0131sayollar\u0131 A\u00e7mak<\/a><ul><li><a href=\"#wp_postmeta_kara_deligi_meta_key_ve_meta_valuenun_terbiye_edilmesi\"><span class=\"toc_number toc_depth_2\">4.1<\/span> wp_postmeta kara deli\u011fi: meta_key ve meta_value\u2019nun terbiye edilmesi<\/a><\/li><li><a href=\"#Siparis_cephesi_wc_order_stats_ve_wc_order_product_lookup_ile_baris\"><span class=\"toc_number toc_depth_2\">4.2<\/span> Sipari\u015f cephesi: wc_order_stats ve wc_order_product_lookup ile bar\u0131\u015f<\/a><\/li><li><a href=\"#Urunler_varyasyonlar_ve_kategori_iliskileri\"><span class=\"toc_number toc_depth_2\">4.3<\/span> \u00dcr\u00fcnler, varyasyonlar ve kategori ili\u015fkileri<\/a><\/li><\/ul><\/li><li><a href=\"#Slow_Query_Analizi_Sorunu_Bulmanin_Sakin_Yolu\"><span class=\"toc_number toc_depth_1\">5<\/span> Slow Query Analizi: Sorunu Bulman\u0131n Sakin Yolu<\/a><ul><li><a href=\"#Slow_query_log_Nerede_takiliyoruz_sorusunun_durust_cevabi\"><span class=\"toc_number toc_depth_2\">5.1<\/span> Slow query log: \u201cNerede tak\u0131l\u0131yoruz?\u201d sorusunun d\u00fcr\u00fcst cevab\u0131<\/a><\/li><li><a href=\"#EXPLAIN_ile_sorgunun_ic_sesi\"><span class=\"toc_number toc_depth_2\">5.2<\/span> EXPLAIN ile sorgunun i\u00e7 sesi<\/a><\/li><li><a href=\"#pt-query-digest_ile_kalabaligi_ozetlemek\"><span class=\"toc_number toc_depth_2\">5.3<\/span> pt-query-digest ile kalabal\u0131\u011f\u0131 \u00f6zetlemek<\/a><\/li><li><a href=\"#Performance_Schema_ve_sys_schema_ile_hizli_bir_bakis\"><span class=\"toc_number toc_depth_2\">5.4<\/span> Performance Schema ve sys schema ile h\u0131zl\u0131 bir bak\u0131\u015f<\/a><\/li><\/ul><\/li><li><a href=\"#Gercek_Hayattan_Minik_Bir_Kontrol_Listesi_Akisi\"><span class=\"toc_number toc_depth_1\">6<\/span> Ger\u00e7ek Hayattan Minik Bir Kontrol Listesi Ak\u0131\u015f\u0131<\/a><\/li><li><a href=\"#Sunucu_Tarafi_Dokunuslari_Kucuk_Ayarlar_Buyuk_Sukunet\"><span class=\"toc_number toc_depth_1\">7<\/span> Sunucu Taraf\u0131 Dokunu\u015flar\u0131: K\u00fc\u00e7\u00fck Ayarlar, B\u00fcy\u00fck S\u00fck\u00fbnet<\/a><\/li><li><a href=\"#WooCommerce_Icin_Ince_Ayar_Adim_Adim_Yol_ve_Kucuk_Sirlar\"><span class=\"toc_number toc_depth_1\">8<\/span> WooCommerce \u0130\u00e7in \u0130nce Ayar: Ad\u0131m Ad\u0131m Yol ve K\u00fc\u00e7\u00fck S\u0131rlar<\/a><ul><li><a href=\"#Once_olc_sonra_ayarla\"><span class=\"toc_number toc_depth_2\">8.1<\/span> \u00d6nce \u00f6l\u00e7, sonra ayarla<\/a><\/li><li><a href=\"#Indeks_eklerken_yazma_maliyetini_unutma\"><span class=\"toc_number toc_depth_2\">8.2<\/span> \u0130ndeks eklerken, yazma maliyetini unutma<\/a><\/li><li><a href=\"#Slow_query_analizi_bir_kez_degil_rutin\"><span class=\"toc_number toc_depth_2\">8.3<\/span> Slow query analizi bir kez de\u011fil, rutin<\/a><\/li><li><a href=\"#Kodu_da_unutma\"><span class=\"toc_number toc_depth_2\">8.4<\/span> Kodu da unutma<\/a><\/li><\/ul><\/li><li><a href=\"#Kapanis_Tuning_Bir_Maraton_Sprint_Degil\"><span class=\"toc_number toc_depth_1\">9<\/span> Kapan\u0131\u015f: Tuning Bir Maraton, Sprint De\u011fil<\/a><\/li><li><a href=\"#Kaynakca_ve_Faydali_Okumalar\"><span class=\"toc_number toc_depth_1\">10<\/span> Kaynak\u00e7a ve Faydal\u0131 Okumalar<\/a><\/li><\/ul><\/div>\n<h2 id=\"section-1\"><span id=\"Kasa_Kuyrugu_Uzadiginda_Hissettigin_O_Gerginlik_WooCommerce_ve_MySQLi_Sakinlestirme_Yolculugu\">Kasa Kuyru\u011fu Uzad\u0131\u011f\u0131nda Hissetti\u011fin O Gerginlik: WooCommerce ve MySQL\u2019i Sakinle\u015ftirme Yolculu\u011fu<\/span><\/h2>\n<p>Hi\u00e7 ba\u015f\u0131n\u0131za geldi mi? Kampanya sayac\u0131 geri sayarken sitede bir \u015feyler a\u011f\u0131rla\u015f\u0131r, \u00fcr\u00fcn sayfalar\u0131 ge\u00e7 gelir, \u00f6deme ad\u0131m\u0131nda k\u00fc\u00e7\u00fck tak\u0131lmalar olur ve o \u00e7ok tatl\u0131 d\u00f6n\u00fc\u015f\u00fcm grafiklerinin ucu a\u015fa\u011f\u0131 k\u0131vr\u0131lmaya ba\u015flar. Bir g\u00fcn tam da b\u00f6yle bir ak\u015fam\u00fcst\u00fc, ofiste kahvemi tazelerken loglara bakt\u0131m ve her \u015feyin ortak bir adreste kesi\u015fti\u011fini fark ettim: MySQL. O g\u00fcn anlad\u0131m ki, WooCommerce\u2019in kalp at\u0131\u015flar\u0131 asl\u0131nda InnoDB\u2019nin ritmine ba\u011fl\u0131. <strong>Buffer Pool<\/strong> do\u011fru nefes alam\u0131yorsa, <strong>indeksler<\/strong> do\u011fru yerde de\u011filse ve <strong>slow query<\/strong> defteri kabarm\u0131\u015fsa, en iyi sunucu bile m\u0131z\u0131k\u00e7\u0131l\u0131k yapabiliyor.<\/p>\n<p>Bu yaz\u0131da seni ad\u0131m ad\u0131m bir tuning turuna \u00e7\u0131karaca\u011f\u0131m. Buffer Pool\u2019u nas\u0131l ayarlayaca\u011f\u0131m\u0131zdan ba\u015flayaca\u011f\u0131z, WooCommerce tablolar\u0131nda indeksleri nerede g\u00fc\u00e7lendirece\u011fimizi konu\u015faca\u011f\u0131z, sonra da slow query analizini g\u00fcndelik al\u0131\u015fkanl\u0131k haline getirecek k\u00fc\u00e7\u00fck bir rit\u00fcele ba\u011flayaca\u011f\u0131z. Arada kendi sahadan notlar\u0131m\u0131, \u201cmesela \u015f\u00f6yle d\u00fc\u015f\u00fcn\u201d diye anlataca\u011f\u0131m ufak anlar\u0131 ekleyece\u011fim. Hedef net: Sipari\u015flerin artt\u0131\u011f\u0131, kampanyan\u0131n co\u015ftu\u011fu o anlarda sitenin sakin ve h\u0131zl\u0131 kalmas\u0131. Hadi ba\u015flayal\u0131m.<\/p>\n<h2 id=\"section-2\"><span id=\"WooCommerce_Trafigi_Neden_MySQLde_Dugumlenir\">WooCommerce Trafi\u011fi Neden MySQL\u2019de D\u00fc\u011f\u00fcmlenir?<\/span><\/h2>\n<h3><span id=\"Okuma-yazma_dengesi_Sepetteki_her_tik_bir_izi_birakir\">Okuma-yazma dengesi: Sepetteki her t\u0131k bir izi b\u0131rak\u0131r<\/span><\/h3>\n<p>WooCommerce, \u00fcr\u00fcn listelemeden sepete, kupondan \u00f6demeye kadar s\u00fcrekli hamle yapar. Bir kullan\u0131c\u0131 \u00fcr\u00fcn sayfas\u0131n\u0131 a\u00e7t\u0131\u011f\u0131nda okuma a\u011f\u0131rl\u0131kl\u0131 i\u015flemler, \u00f6deme ad\u0131m\u0131na geldi\u011finde ise yazma a\u011f\u0131rl\u0131kl\u0131 i\u015flemler devreye girer. Okuma h\u0131zlan\u0131r, yazma biraz daha titiz davran\u0131r. \u00c7\u00fcnk\u00fc yazma dedi\u011fin \u015fey, sipari\u015fin gelece\u011fini garantiye almak demek. InnoDB de bu dengeyi <strong>Buffer Pool<\/strong>, <strong>redo log<\/strong> ve <strong>flush<\/strong> davran\u0131\u015flar\u0131yla korur. Kampanya anlar\u0131nda birden \u00e7ok kullan\u0131c\u0131 ayn\u0131 anda sepete dokundu\u011funda, bu minik yazma yo\u011funlu\u011fu h\u0131zla b\u00fcy\u00fcyen bir trafi\u011fe d\u00f6ner.<\/p>\n<p>Mesela \u015f\u00f6yle d\u00fc\u015f\u00fcn: Bir markette kasalar\u0131n \u00f6n\u00fcne kurulan minik el arabalar\u0131 gibi, Buffer Pool da verileri belle\u011fe yerle\u015ftiriyor. Arabalar do\u011fru yerdeyse s\u0131ra h\u0131zl\u0131 ak\u0131yor. Ama arabalar hem \u00e7ok k\u00fc\u00e7\u00fck hem de yanl\u0131\u015f yerdeyse, \u00fcr\u00fcnler tekrardan raftan ta\u015f\u0131nmak zorunda kal\u0131yor. Diskten getir-g\u00f6t\u00fcr ba\u015fl\u0131yor ve kuyruk uzuyor.<\/p>\n<h3><span id=\"Olcmeden_ayar_olmaz_Kucuk_bir_temel_fotograf_cek\">\u00d6l\u00e7meden ayar olmaz: K\u00fc\u00e7\u00fck bir temel foto\u011fraf \u00e7ek<\/span><\/h3>\n<p>\u0130\u015fe giri\u015fmeden \u00f6nce, sistemin \u201cnormal\u201d halini \u00f6\u011frenmek iyi bir refleks. Basit bir d\u00f6nem se\u00e7, \u00f6rne\u011fin ge\u00e7en hafta ayn\u0131 saat aral\u0131\u011f\u0131. CPU e\u011frileri, disk bekleme s\u00fcreleri, MySQL ba\u011flant\u0131 say\u0131s\u0131 ve en \u00f6nemlisi sayfa yan\u0131t s\u00fcreleri\u2026 Sonra bu foto\u011fraf\u0131n \u00fcst\u00fcne tuning sonras\u0131 ba\u015fka bir foto\u011fraf koy. Aradaki fark, yapt\u0131\u011f\u0131n ayar\u0131n i\u015fe yaray\u0131p yaramad\u0131\u011f\u0131n\u0131 anlat\u0131r. Bu d\u00fc\u015f\u00fcnme \u015fekli, seni \u201crastgele ayar\u201d yapmaktan korur.<\/p>\n<p>E\u011fer altyap\u0131n\u0131n enerjisini daha yukar\u0131 ta\u015f\u0131mak istiyorsan, sunucu taraf\u0131ndaki b\u00fct\u00fcnsel ayarlar\u0131 da hat\u0131rla. Bizim \u015fu rehber, <a href=\"https:\/\/www.dchost.com\/blog\/wordpress-icin-sunucu-tarafi-optimizasyon-php-fpm-opcache-redis-ve-mysql-ile-neyi-ne-zaman-nasil-ayarlamalisin\/\">WordPress i\u00e7in sunucu taraf\u0131 optimizasyonunda neyi, ne zaman, nas\u0131l ayarlamal\u0131s\u0131n<\/a>, resmin tamam\u0131n\u0131 g\u00f6rmek i\u00e7in g\u00fczel bir e\u015flik\u00e7i olur. Bir di\u011fer tarafta, WooCommerce\u2019in ger\u00e7ek\u00e7i y\u00fcklerini tahmin etmek i\u00e7in <a href=\"https:\/\/www.dchost.com\/blog\/woocommerce-kapasite-planlama-rehberi-vcpu-ram-iops-nasil-hesaplanir\/\">kapsaml\u0131 kapasite planlama rehberine<\/a> g\u00f6z atmak, do\u011fru miktarda kaynakla yola \u00e7\u0131kman\u0131 sa\u011flar.<\/p>\n<h2 id=\"section-3\"><span id=\"Buffer_Pool_InnoDBnin_Nefesi_Ne_Kadar_Uzun_Olmali\">Buffer Pool: InnoDB\u2019nin Nefesi Ne Kadar Uzun Olmal\u0131?<\/span><\/h2>\n<h3><span id=\"Ne_kadar_RAM_ayirmali_Yeterince_buyuk_ama_asiri_degil_dengesi\">Ne kadar RAM ay\u0131rmal\u0131? \u201cYeterince b\u00fcy\u00fck, ama a\u015f\u0131r\u0131 de\u011fil\u201d dengesi<\/span><\/h3>\n<p>Buffer Pool, InnoDB\u2019nin en \u00f6nemli belle\u011fi. S\u0131k okunan sayfalar\u0131, indeksleri ve veri sayfalar\u0131n\u0131 burada tutar. Mant\u0131k basit: Ne kadar \u00e7ok veriyi RAM\u2019de tutarsan, diske o kadar az u\u011frars\u0131n. Ama her g\u00fczel \u015feyin bir dozu var. T\u00fcm RAM\u2019i MySQL\u2019e vermek, sistemin nefesini keser. \u0130\u015fletim sistemi, PHP-FPM, Nginx\/Apache, Redis veya arka plandaki di\u011fer servisler de pay ister.<\/p>\n<p>Pratik bir yakla\u015f\u0131m seviyorsan \u015f\u00f6yle d\u00fc\u015f\u00fcn: Sunucundaki toplam RAM\u2019in \u00f6nemli bir k\u0131sm\u0131n\u0131 Buffer Pool\u2019a ay\u0131r, ama operasyon sistemine ve uygulamalara makul bir alan b\u0131rak. Msela 32 GB RAM\u2019li bir sunucuda, WooCommerce a\u011f\u0131rl\u0131kl\u0131 bir trafik i\u00e7in Buffer Pool\u2019u geni\u015f tutmak ak\u0131ll\u0131ca olur; fakat PHP s\u00fcre\u00e7lerinin ve dosya sistemi \u00f6nbelle\u011finin darlanmamas\u0131na da dikkat et. <strong>Hedef<\/strong>, diskten okumay\u0131 azalt\u0131rken, sistemin genel istikrar\u0131n\u0131 bozmamak.<\/p>\n<p>Buffer Pool ayarlar\u0131n\u0131 yaparken, <a href=\"https:\/\/dev.mysql.com\/doc\/refman\/8.0\/en\/innodb-buffer-pool.html\" rel=\"nofollow noopener\" target=\"_blank\">MySQL\u2019in InnoDB Buffer Pool dok\u00fcmantasyonuna<\/a> g\u00f6z atmak ak\u0131l a\u00e7ar. Orada meselelerin \u00f6z\u00fcn\u00fc sade bir dille anlat\u0131rlar. Sen yine de form\u00fcl ezberlemek yerine, kendi sitenin eri\u015fim desenine g\u00fcven. \u00dcr\u00fcn sayfalar\u0131 \u00e7ok b\u00fcy\u00fck g\u00f6rseller ve uzun a\u00e7\u0131klamalarla doluysa, veritaban\u0131n\u0131n tuttu\u011fu alanlar da artar. Tersine, daha yal\u0131n bir katalogda bellek y\u00fck\u00fc daha az olur.<\/p>\n<h3><span id=\"Buffer_Pool_parcalari_arka_plan_temizlikcisi_ve_flush_duzeni\">Buffer Pool par\u00e7alar\u0131, arka plan temizlik\u00e7isi ve flush d\u00fczeni<\/span><\/h3>\n<p>Buffer Pool b\u00fcy\u00fcd\u00fck\u00e7e, i\u00e7indeki sayfalar\u0131 d\u00fczenli temizlemek ve yazmak da \u00f6nemli hale gelir. Burada iki ayar \u00f6zellikle ho\u015fumuza gider: \u00e7ok \u00e7ekirdekli makinelerde <strong>innodb_buffer_pool_instances<\/strong> ile havuzu mant\u0131kl\u0131 par\u00e7alara b\u00f6lmek ve <strong>innodb_page_cleaners<\/strong> ile arka plan yaz\u0131c\u0131lar\u0131n\u0131 art\u0131rmak. \u00c7ok b\u00fcy\u00fck bir havuzu tek par\u00e7a b\u0131rakmak yerine, makinenin \u00e7ekirdek say\u0131s\u0131na uyumlu birka\u00e7 par\u00e7a halinde kullanmak, kilitlenmeleri azalt\u0131r.<\/p>\n<p>Flush davran\u0131\u015flar\u0131 ise bir denge oyunu gibidir. \u00c7ok agresif yazarsan disk yorulur, \u00e7ok tembel davran\u0131rsan yazma patlamalar\u0131nda t\u0131kanma ya\u015fars\u0131n. <strong>innodb_flush_neighbors<\/strong> ve <strong>innodb_io_capacity<\/strong> ayarlar\u0131 ile diskin h\u0131z\u0131na uygun bir tempo bul. NVMe gibi h\u0131zl\u0131 disklerde kapasite de\u011ferlerini biraz yukar\u0131 ta\u015f\u0131mak m\u00fcmk\u00fcnken, daha m\u00fctevaz\u0131 donan\u0131mlarda ortay\u0131 bulmak daha do\u011frudur. Ama\u00e7, sipari\u015f akarken Buffer Pool\u2019un s\u0131rt\u0131n\u0131 rahatlatmak.<\/p>\n<h3><span id=\"Redo_log_O_son_hamleyi_guvenli_saklama_sanati\">Redo log: O son hamleyi g\u00fcvenli saklama sanat\u0131<\/span><\/h3>\n<p>Yazma i\u015flemlerinde i\u015fin sigortas\u0131 <strong>redo log<\/strong>. Do\u011fru boyutta de\u011filse, s\u0131k s\u0131k geri d\u00f6n\u00fcp temizlik yapmak zorunda kal\u0131r ve sistem gereksiz yere dalgalan\u0131r. Boyutu \u00e7ok k\u00fc\u00e7\u00fck olursa, beklenmedik yo\u011funluklarda nefesi kesilir. \u00c7ok b\u00fcy\u00fck olursa toparlamak zorla\u015f\u0131r. Bu, kampanya anlar\u0131ndaki yazma yo\u011funlu\u011fu ile ili\u015fkili bir karar. <strong>innodb_log_file_size<\/strong> ve <strong>innodb_log_files_in_group<\/strong> ikilisiyle rahat bir alan a\u00e7mak, Buffer Pool\u2019un s\u0131rt\u0131ndan y\u00fck al\u0131r.<\/p>\n<p>Bir de \u015fu me\u015fhur <strong>innodb_flush_log_at_trx_commit<\/strong> var. Bu ayar, yazma h\u0131z\u0131n\u0131 ve veri g\u00fcvenli\u011fini ayn\u0131 terazide tartar. Tam g\u00fcvenlik istiyorsan en s\u0131k\u0131 ayarla devam edersin, k\u00fc\u00e7\u00fck esneklik kabul ediyorsan ara ayarlarla yazma h\u0131z\u0131n\u0131 rahatlat\u0131rs\u0131n. \u00dcretimde karar verirken, sipari\u015flerin kritikli\u011fi ve altyap\u0131n\u0131n UPS, RAID ve yedekleme disiplini gibi dayanaklar\u0131n\u0131 da d\u00fc\u015f\u00fcn. Veriyi asla riske atma; performans kazan\u0131rken g\u00fcvenlikten vazge\u00e7memek temel bir prensip.<\/p>\n<h3><span id=\"Gecici_tablolara_kucuk_bir_bakis_tmp_table_size_ve_dostlari\">Ge\u00e7ici tablolara k\u00fc\u00e7\u00fck bir bak\u0131\u015f: tmp_table_size ve dostlar\u0131<\/span><\/h3>\n<p>WooCommerce sorgular\u0131nda bazen ge\u00e7ici tablolara ihtiya\u00e7 duyulur. Birle\u015ftirmeler, s\u0131ralamalar, raporlar\u2026 <strong>tmp_table_size<\/strong> ve <strong>max_heap_table_size<\/strong> de\u011ferlerini tutarl\u0131 bir seviyeye getirmek, bu ge\u00e7ici tablolardan disk yerine RAM\u2019de faydalanman\u0131 sa\u011flar. Fakat bu de\u011ferleri abartmak, beklenmedik bellek t\u00fcketimlerine yol a\u00e7abilir. Kural ayn\u0131: Yeterli ama a\u015f\u0131r\u0131 de\u011fil. Ayr\u0131ca <strong>sort_buffer_size<\/strong> veya <strong>join_buffer_size<\/strong> gibi oturum tabanl\u0131 alanlar\u0131n \u00e7ok b\u00fcy\u00fct\u00fclmesinin, ba\u011flant\u0131 say\u0131s\u0131 artt\u0131\u011f\u0131nda toplam RAM\u2019i zorlayabilece\u011fini akl\u0131nda tut.<\/p>\n<h2 id=\"section-4\"><span id=\"Indeksleme_WooCommerce_Tablolarinda_Gizli_Kisayollari_Acmak\">\u0130ndeksleme: WooCommerce Tablolar\u0131nda Gizli K\u0131sayollar\u0131 A\u00e7mak<\/span><\/h2>\n<h3><span id=\"wp_postmeta_kara_deligi_meta_key_ve_meta_valuenun_terbiye_edilmesi\">wp_postmeta kara deli\u011fi: meta_key ve meta_value\u2019nun terbiye edilmesi<\/span><\/h3>\n<p>WooCommerce\u2019in en \u00e7ok konu\u015fulan masallar\u0131ndan biri <strong>wp_postmeta<\/strong>. \u00dcr\u00fcnlerin, varyasyonlar\u0131n, fiyatlar\u0131n, \u00f6zel alanlar\u0131n \u00e7o\u011fu burada konu\u015fur. S\u0131k ya\u015fanan dert \u015fudur: meta_value \u00fczerinde arama yapman gerekir, ama o alan metinsel ve geni\u015ftir. Bu durumda tam metin arama gibi farkl\u0131 stratejiler g\u00fcndeme gelebilir, fakat pratikte \u00e7o\u011fu sorgu meta_key + post_id \u00e7izgisinde toparlan\u0131r. Mesela stok takibi, fiyat kar\u015f\u0131la\u015ft\u0131rmas\u0131, g\u00f6r\u00fcn\u00fcrl\u00fck filtreleri gibi i\u015fler. Burada i\u015fine yarayacak \u015fey, do\u011fru s\u00fctun s\u0131ralamas\u0131na sahip bir <strong>bile\u015fik indeks<\/strong>. Sorgular\u0131n en s\u0131k nereden darald\u0131\u011f\u0131na g\u00f6re <strong>(post_id, meta_key)<\/strong> veya <strong>(meta_key, post_id)<\/strong> d\u00fczeni, filtrelemeyi h\u0131zland\u0131r\u0131r.<\/p>\n<p>Benim sahada s\u0131k g\u00f6rd\u00fc\u011f\u00fcm durum \u015fu: Geli\u015ftirici taraf\u0131nda k\u00fc\u00e7\u00fck bir rapor yaz\u0131l\u0131yor, bir iki ek ko\u015ful ekleniyor derken \u201ch\u0131zl\u0131 \u00e7al\u0131\u015f\u0131yor gibi\u201d hissi olu\u015fuyor. Trafik ger\u00e7ek hayata kar\u0131\u015ft\u0131\u011f\u0131nda ise sorgu plan\u0131 farkl\u0131 bir yola sap\u0131yor. \u00c7\u00f6z\u00fcm basit: Sorgunun ger\u00e7ek y\u00fcz\u00fcn\u00fc <strong>EXPLAIN<\/strong> ile g\u00f6r ve ona g\u00f6re indeksle. Bu ufak al\u0131\u015fkanl\u0131k, postmeta\u2019y\u0131 bir karanl\u0131k kuyu olmaktan \u00e7\u0131kar\u0131r.<\/p>\n<h3><span id=\"Siparis_cephesi_wc_order_stats_ve_wc_order_product_lookup_ile_baris\">Sipari\u015f cephesi: wc_order_stats ve wc_order_product_lookup ile bar\u0131\u015f<\/span><\/h3>\n<p>WooCommerce\u2019\u0131n modern tablolar\u0131 olan <strong>wc_order_stats<\/strong> ve <strong>wc_order_product_lookup<\/strong>, sipari\u015f \u00f6zetlerini ve kalem detaylar\u0131n\u0131 daha okunakl\u0131 bir yap\u0131ya ta\u015f\u0131r. Sipari\u015f listesinde tarih aral\u0131\u011f\u0131, durum, m\u00fc\u015fteri ID\u2019si gibi filtreler yayg\u0131nd\u0131r. Bu y\u00fczden <strong>date_created<\/strong>, <strong>status<\/strong> ve <strong>customer_id<\/strong> \u00fczerine uygun bile\u015fik indeksler, en yo\u011fun anlarda fark yarat\u0131r. \u00dcr\u00fcn bazl\u0131 raporlar, kategori bazl\u0131 k\u0131r\u0131l\u0131mlar ve kampanya analizleri i\u00e7in de lookup tablosu \u00fczerinde \u00fcr\u00fcn ID\u2019si odakl\u0131 indeksler do\u011fru adrestir. Buradaki i\u015fin p\u00fcf noktas\u0131, <strong>en s\u0131k kullan\u0131lan filtreleri<\/strong> \u00f6ncelemek ve gereksiz her ek indeksten ka\u00e7\u0131nmakt\u0131r. \u00c7\u00fcnk\u00fc her indeks yazma maliyeti demek; sipari\u015f kaydederken fazladan y\u00fck ta\u015f\u0131mak istemezsin.<\/p>\n<p>Tek bir \u00f6rnek \u00fczerinden d\u00fc\u015f\u00fcnelim. Y\u00f6netim panelinde ge\u00e7mi\u015f 7 g\u00fcn\u00fcn iptal edilmi\u015f sipari\u015flerini durum ve tarih ile listeliyorsun. Sorgu plan\u0131nda tarih aral\u0131\u011f\u0131na g\u00f6re tarama yap\u0131l\u0131yor ve \u00fcst\u00fcne status filtresi geliyor. Bu durumda <strong>(status, date_created)<\/strong> ya da <strong>(date_created, status)<\/strong> aras\u0131nda se\u00e7im, sorgunun nereden darald\u0131\u011f\u0131na ba\u011fl\u0131. EXPLAIN burada pusulan. Bir bak\u0131\u015fta, indeksin hangi kolu kulland\u0131\u011f\u0131n\u0131 anlat\u0131r.<\/p>\n<h3><span id=\"Urunler_varyasyonlar_ve_kategori_iliskileri\">\u00dcr\u00fcnler, varyasyonlar ve kategori ili\u015fkileri<\/span><\/h3>\n<p>Varyasyonlu \u00fcr\u00fcnlerin \u00e7ok oldu\u011fu kataloglarda, <strong>wp_posts<\/strong>, <strong>wp_term_relationships<\/strong> ve <strong>wp_postmeta<\/strong> \u00fc\u00e7l\u00fcs\u00fc birlikte dans eder. Kategori \u00fczerinden \u00fcr\u00fcn listeleme yaparken, ili\u015fki tablosundaki <strong>term_taxonomy_id<\/strong> ve <strong>object_id<\/strong> odakl\u0131 indeksler yol a\u00e7ar. Varyasyon ararken, ebeveyn \u00fcr\u00fcn ile ba\u011flant\u0131y\u0131 do\u011fru kurmak ve post_type + post_status k\u0131s\u0131t\u0131n\u0131 bo\u015fa \u00e7\u0131karmamak, gereksiz taramalar\u0131 azalt\u0131r. \u201cTek bir sayfa a\u011f\u0131r\u201d dedi\u011finde, \u00e7o\u011fu zaman arka tarafta birka\u00e7 k\u00fc\u00e7\u00fck indeks dokunu\u015fu ve sorgu d\u00fczenlemesi yeterli olur.<\/p>\n<p>\u0130\u015fin ho\u015f yan\u0131 \u015fu: \u0130ndeksler g\u00f6r\u00fcnmez kahramanlar gibidir. Do\u011fru yerde olduklar\u0131nda kimse onlar\u0131 fark etmez, her \u015fey h\u0131zl\u0131d\u0131r. Yanl\u0131\u015f yerde veya gere\u011finden fazla olduklar\u0131nda ise yazma taraf\u0131nda usul usul bir y\u00fck bindirirler. Dengeyi, ger\u00e7ek trafik ve EXPLAIN \u00e7\u0131kt\u0131lar\u0131yla kurars\u0131n.<\/p>\n<h2 id=\"section-5\"><span id=\"Slow_Query_Analizi_Sorunu_Bulmanin_Sakin_Yolu\">Slow Query Analizi: Sorunu Bulman\u0131n Sakin Yolu<\/span><\/h2>\n<h3><span id=\"Slow_query_log_Nerede_takiliyoruz_sorusunun_durust_cevabi\">Slow query log: \u201cNerede tak\u0131l\u0131yoruz?\u201d sorusunun d\u00fcr\u00fcst cevab\u0131<\/span><\/h3>\n<p>\u0130nan bana, slow query log dosyas\u0131 iyi bir arkada\u015f gibi. Ne kadar net olursan, o kadar yard\u0131mc\u0131 olur. Ba\u015flang\u0131\u00e7 i\u00e7in <strong>slow_query_log<\/strong>\u2019u aktif et, <strong>long_query_time<\/strong> de\u011ferini makul bir e\u015fi\u011fe indir ve bir s\u00fcre ger\u00e7ek trafik alt\u0131nda veri topla. \u201c\u0130ndeks kullan\u0131lmayan sorgular\u0131 da g\u00f6rmek istiyorum\u201d dersen <strong>log_queries_not_using_indexes<\/strong> ile \u00e7emberi geni\u015fletirsin ama \u00e7ok g\u00fcr\u00fclt\u00fc \u00fcretebilece\u011fini unutma. Sonra bu dosyay\u0131 bir analiz arac\u0131ndan ge\u00e7ir ve kal\u0131plar\u0131 yakala.<\/p>\n<p>K\u00fc\u00e7\u00fck bir ipucu: \u00dcretimde e\u015fi\u011fi a\u015f\u0131r\u0131 d\u00fc\u015f\u00fck tutmak gereksiz kalabal\u0131k \u00e7\u0131kar\u0131r. \u00d6nce sorunlu saatleri hedefle, oradan daralt. Birka\u00e7 g\u00fcn sonra tekrar bak, iyile\u015fme grafi\u011fini b\u00f6yle \u00e7izersin.<\/p>\n<h3><span id=\"EXPLAIN_ile_sorgunun_ic_sesi\">EXPLAIN ile sorgunun i\u00e7 sesi<\/span><\/h3>\n<p>EXPLAIN \u00e7\u0131kt\u0131s\u0131n\u0131 okumak, sorgu plan\u0131n\u0131 do\u011frudan g\u00f6rmek demek. Hangi indeks kullan\u0131lm\u0131\u015f, tahmini ka\u00e7 sat\u0131r taranm\u0131\u015f, s\u0131ralama nerede yap\u0131lm\u0131\u015f\u2026 \u00c7ok teknik detaya bo\u011fmadan, \u015fu al\u0131\u015fkanl\u0131k yeterli: Filtreledi\u011fin s\u00fctunlar\u0131n indeksli oldu\u011fundan emin ol, s\u0131ralama yapt\u0131\u011f\u0131n s\u00fctunlar indeksle uyumlu \u00e7al\u0131\u015fs\u0131n ve m\u00fcmk\u00fcnse gereksiz geni\u015f tablolardan \u00f6nce daralt\u0131c\u0131 tablolara y\u00f6nel. <a href=\"https:\/\/dev.mysql.com\/doc\/refman\/8.0\/en\/explain-output.html\" rel=\"nofollow noopener\" target=\"_blank\">MySQL EXPLAIN \u00e7\u0131kt\u0131s\u0131n\u0131n anlat\u0131m\u0131<\/a> k\u0131sa bir okumayla bile iyi bir fark yarat\u0131r.<\/p>\n<p>Mesela kampanya raporu yazarken, \u00f6nce tarih aral\u0131\u011f\u0131n\u0131 daralt, sonra durumu filtrele, en son kategori ya da m\u00fc\u015fteri bilgisiyle tatland\u0131r. Bu basit yol, hem EXPLAIN\u2019\u0131 g\u00fczelle\u015ftirir hem de sunucunun nefesini a\u00e7ar.<\/p>\n<h3><span id=\"pt-query-digest_ile_kalabaligi_ozetlemek\">pt-query-digest ile kalabal\u0131\u011f\u0131 \u00f6zetlemek<\/span><\/h3>\n<p>Bir d\u00f6nem ge\u00e7tikten sonra elinde b\u00fcy\u00fck bir slow log olur. Onu tek tek okumak yerine, <strong>pt-query-digest<\/strong> ile gruplamak harika bir kolayl\u0131k sa\u011flar. Ben genelde sorgular\u0131 normalle\u015ftirir, en \u00e7ok zaman alan ilk birka\u00e7 gruba odaklan\u0131r\u0131m. Buradan \u00e7\u0131kan dersler, indeks d\u00fczeltmeleri veya sorgu iyile\u015ftirmeleri i\u00e7in do\u011frudan aksiyona d\u00f6n\u00fc\u015f\u00fcr. Arac\u0131 merak ediyorsan, <a href=\"https:\/\/www.percona.com\/software\/percona-toolkit\/pt-query-digest\" rel=\"nofollow noopener\" target=\"_blank\">pt-query-digest hakk\u0131nda \u00f6zet bilgi<\/a> i\u015fini g\u00f6r\u00fcr.<\/p>\n<p>Bu ritmi haftal\u0131k bir al\u0131\u015fkanl\u0131\u011fa \u00e7evirdi\u011finde, performans sorunlar\u0131 b\u00fcy\u00fcmeden k\u00fc\u00e7\u00fcl\u00fcr. Loglar\u0131 dinleyen bir kulak geli\u015ftirirsin, i\u015fte bu kulak g\u00fcn\u00fcn birinde kampanya ak\u015fam\u0131n\u0131 kurtar\u0131r.<\/p>\n<h3><span id=\"Performance_Schema_ve_sys_schema_ile_hizli_bir_bakis\">Performance Schema ve sys schema ile h\u0131zl\u0131 bir bak\u0131\u015f<\/span><\/h3>\n<p>Detaya inmek istedi\u011fin anlarda <strong>Performance Schema<\/strong> ve onun \u00fcst\u00fcnde \u00e7al\u0131\u015fan <strong>sys schema<\/strong> g\u00fczel kestirme yollar sunar. En \u00e7ok CPU harcayan sorgu tipleri, kilit beklemeleri, dosya I\/O \u00f6zetleri\u2026 Buradan ald\u0131\u011f\u0131n sinyaller EXPLAIN ve indeks ayarlar\u0131na do\u011frudan y\u00f6n verir. Kula\u011fa a\u011f\u0131r gelebilir ama merakland\u0131\u011f\u0131nda k\u00fc\u00e7\u00fck ad\u0131mlarla ba\u015fla, bir iki g\u00f6r\u00fcn\u00fcm oku, sonra yava\u015f yava\u015f derinle\u015f.<\/p>\n<h2 id=\"section-6\"><span id=\"Gercek_Hayattan_Minik_Bir_Kontrol_Listesi_Akisi\">Ger\u00e7ek Hayattan Minik Bir Kontrol Listesi Ak\u0131\u015f\u0131<\/span><\/h2>\n<p>Bir projede ba\u015f\u0131 s\u0131k\u0131\u015fm\u0131\u015f bir ma\u011fazay\u0131 sakinle\u015ftirirken \u015fu s\u0131ray\u0131 takip ettik ve iyi sonu\u00e7 ald\u0131yd\u0131k. \u00d6nce <strong>yedekleri<\/strong> tazeledik, \u00e7\u00fcnk\u00fc tuning her zaman g\u00fcvenli bir omuz ister. Sonra Buffer Pool\u2019u makinenin kapasitesine uygun \u015fekilde b\u00fcy\u00fctt\u00fck ve havuzu birka\u00e7 par\u00e7aya b\u00f6ld\u00fck. Redo log boyutunu g\u00fcncel trafi\u011fe uygun hale getirdik. Bu a\u015famada sunucu izleme ara\u00e7lar\u0131nda disk bekleme s\u00fcrelerinin d\u00fc\u015ft\u00fc\u011f\u00fcn\u00fc g\u00f6rmek motive edici oldu.<\/p>\n<p>Ard\u0131ndan slow query log\u2019u birka\u00e7 g\u00fcn a\u00e7\u0131k tuttuk. pt-query-digest ile en \u00e7ok zaman harcayan \u00fc\u00e7 sorguyu bulduk. Hepsi de farkl\u0131 \u015fekillerde postmeta ve sipari\u015f \u00f6zet tablolar\u0131yla ilgiliydi. EXPLAIN\u2019\u0131 a\u00e7\u0131nca, baz\u0131 sorgular\u0131n indeksleri kullan\u0131lmad\u0131\u011f\u0131n\u0131 fark ettik. K\u00fc\u00e7\u00fck iki bile\u015fik indeks ekledik ve sorgular\u0131n s\u0131radaki davran\u0131\u015f\u0131 tamamen de\u011fi\u015fti. Sonraki g\u00fcnlerde ayn\u0131 saatlerde yapt\u0131\u011f\u0131m\u0131z y\u00fck testlerinde, sayfa yan\u0131tlar\u0131n\u0131n belirgin \u00f6l\u00e7\u00fcde iyile\u015fti\u011fini g\u00f6zlemledik.<\/p>\n<p>\u00d6zetle, kontrol listesi dedi\u011fin \u015fey bir roman olmak zorunda de\u011fil. Birka\u00e7 g\u00fc\u00e7l\u00fc sahne, geri kalan her \u015feyi toparlar: <strong>yedek al<\/strong>, <strong>Buffer Pool\u2019u do\u011fru boyutland\u0131r<\/strong>, <strong>slow log topla<\/strong>, <strong>EXPLAIN ile y\u00fczle\u015f<\/strong>, <strong>indeksleri ak\u0131ll\u0131ca d\u00fczenle<\/strong> ve <strong>tekrar \u00f6l\u00e7<\/strong>. \u0130\u015fte bu d\u00f6ng\u00fc, projeni g\u00fcvenle b\u00fcy\u00fct\u00fcr.<\/p>\n<p>Bu arada, e\u011fer arka tarafta \u00f6nbelle\u011fi de do\u011fru kurmak istersen, <a href=\"https:\/\/www.dchost.com\/blog\/wordpress-ve-woocommerce-icin-redis-mi-memcached-mi-kalici-nesne-onbellegi-ttl-ve-eviction-ayarlarini-ne-zaman-nasil-yaparsin\/\">WooCommerce i\u00e7in kal\u0131c\u0131 nesne \u00f6nbelle\u011fi ve TTL ayarlar\u0131na dair \u015fu pratik rehber<\/a> \u00e7ok i\u015flev g\u00f6r\u00fcyor. Uygulama katman\u0131ndaki do\u011fru \u00f6nbellek, veritaban\u0131n\u0131n y\u00fck\u00fcn\u00fc hafifletip tuning hamlelerini daha etkili k\u0131lar.<\/p>\n<h2 id=\"section-7\"><span id=\"Sunucu_Tarafi_Dokunuslari_Kucuk_Ayarlar_Buyuk_Sukunet\">Sunucu Taraf\u0131 Dokunu\u015flar\u0131: K\u00fc\u00e7\u00fck Ayarlar, B\u00fcy\u00fck S\u00fck\u00fbnet<\/span><\/h2>\n<p>\u0130\u015f sadece MySQL ayarlar\u0131yla bitmiyor. Disk katman\u0131nda h\u0131zl\u0131 ve istikrarl\u0131 bir depolama kullanmak, bu i\u015fe yap\u0131lan en b\u00fcy\u00fck iyilik. Dosya sistemi \u00f6nbelle\u011fi i\u00e7in i\u015fletim sistemine makul RAM b\u0131rakmak, ani dalgalanmalar\u0131 yumu\u015fat\u0131r. Swap\u2019in varl\u0131\u011f\u0131 bir emniyet yast\u0131\u011f\u0131d\u0131r ama yo\u011fun kullan\u0131m\u0131 performans\u0131 bozar. Baz\u0131 \u00e7ekirdek ayarlar\u0131yla, \u00f6rne\u011fin bellek k\u0131rp\u0131\u015fmalar\u0131n\u0131 azaltmak ve \u015fi\u015fkin sayfa davran\u0131\u015flar\u0131n\u0131 kapatmak gibi ufak dokunu\u015flar, \u00f6zellikle yo\u011fun anlarda sistemi daha dengeli tutar.<\/p>\n<p>Bir di\u011fer kritik konu, d\u00fczenli ve sa\u011fl\u0131kl\u0131 yedekleme. MySQL\u2019i rahatlat\u0131rken veriyi asla riske atma. \u201cBir \u015fey g\u00fcncellemeden \u00f6nce ben yede\u011fi g\u00f6rmek istiyorum\u201d al\u0131\u015fkanl\u0131\u011f\u0131, uyku kalitesini bile art\u0131r\u0131r. Bu konuda kafan\u0131n bir k\u00f6\u015fesinde dursun diye, <a href=\"https:\/\/www.dchost.com\/blog\/mysql-mariadb-yedekleme-stratejileri-mysqldump-mi-xtrabackup-mi-ve-point%E2%80%91in%E2%80%91time-recovery-ne-zaman\/\">MySQL\/MariaDB yedekleme stratejilerini<\/a> derli toplu anlatt\u0131\u011f\u0131m\u0131z bir yaz\u0131y\u0131 b\u0131rak\u0131yorum. Sen yine de tuning hamlelerinden \u00f6nce, otomatik yedeklerin ger\u00e7ekten \u00e7al\u0131\u015ft\u0131\u011f\u0131n\u0131 test etmeden ilerleme.<\/p>\n<p>Kaynak se\u00e7imi a\u015famas\u0131ndaysan ve altyap\u0131y\u0131 b\u00fcy\u00fctmeyi d\u00fc\u015f\u00fcn\u00fcyorsan, <a href=\"https:\/\/www.dchost.com\/blog\/woocommerce-laravel-ve-node-jsde-dogru-vps-kaynaklarini-nasil-secersin-cpu-ram-nvme-ve-bant-genisligi-rehberi\/\">do\u011fru VPS kaynaklar\u0131n\u0131 se\u00e7me rehberi<\/a> de g\u00fczel bir e\u015flik\u00e7i olur. CPU, RAM ve disk I\/O dengesini ba\u015ftan iyi kurmak, veritaban\u0131 tuning\u2019ini kat kat etkili hale getirir.<\/p>\n<h2 id=\"section-8\"><span id=\"WooCommerce_Icin_Ince_Ayar_Adim_Adim_Yol_ve_Kucuk_Sirlar\">WooCommerce \u0130\u00e7in \u0130nce Ayar: Ad\u0131m Ad\u0131m Yol ve K\u00fc\u00e7\u00fck S\u0131rlar<\/span><\/h2>\n<h3><span id=\"Once_olc_sonra_ayarla\">\u00d6nce \u00f6l\u00e7, sonra ayarla<\/span><\/h3>\n<p>Buffer Pool b\u00fcy\u00fctmek her zaman sihirli de\u011fnek gibi hissedilir, ama nerede duraca\u011f\u0131n\u0131 bilmek de bir sanatt\u0131r. \u00d6l\u00e7meye, grafiklere bakmaya, EXPLAIN \u00e7\u0131kt\u0131s\u0131n\u0131 okumaya al\u0131\u015f. Birka\u00e7 g\u00fcn ayn\u0131 tempoda ko\u015ftur ve fark\u0131 hisset. Dramatik ad\u0131mlar atmak yerine k\u00fc\u00e7\u00fck ve kontroll\u00fc de\u011fi\u015fiklikler, sistemin do\u011fas\u0131n\u0131 korur.<\/p>\n<h3><span id=\"Indeks_eklerken_yazma_maliyetini_unutma\">\u0130ndeks eklerken, yazma maliyetini unutma<\/span><\/h3>\n<p>\u0130ndeksler okuma yapt\u0131\u011f\u0131nda kurtar\u0131c\u0131d\u0131r, yazma yapt\u0131\u011f\u0131nda fazladan \u00e7aba ister. Sipari\u015f kayd\u0131, stok g\u00fcncellemesi, kupon kullan\u0131m\u0131 gibi yazma i\u00e7eren anlar artt\u0131k\u00e7a, her indeksin g\u00fcncellenmesi gerekir. Bu y\u00fczden ger\u00e7ekten i\u015f g\u00f6ren indeksleri tut, gereksiz olanlar\u0131 temizle. Bile\u015fik indekslerde s\u00fctun s\u0131ras\u0131, sorgunun en \u00e7ok darald\u0131\u011f\u0131 yere g\u00f6re belirlenmeli. Birka\u00e7 EXPLAIN denemesi, seni do\u011fru s\u0131raya g\u00f6t\u00fcr\u00fcr.<\/p>\n<h3><span id=\"Slow_query_analizi_bir_kez_degil_rutin\">Slow query analizi bir kez de\u011fil, rutin<\/span><\/h3>\n<p>Slow log\u2019u a\u00e7\u0131p bir defa bakmakla i\u015f bitmiyor. Trafi\u011fin \u015fekli de\u011fi\u015fir, kampanyalar yeni sorgular\u0131 ortaya \u00e7\u0131kar\u0131r, eklentiler farkl\u0131 davran\u0131\u015flar \u00fcretir. Haftal\u0131k veya iki haftal\u0131k bir ritimle slow query analizi yapmak, performans\u0131 s\u00fcrekli canl\u0131 tutman\u0131n en pratik yolu. \u00dc\u00e7 be\u015f k\u00fc\u00e7\u00fck iyile\u015ftirme, bazen bir donan\u0131m y\u00fckseltmesinden daha \u00e7ok sonu\u00e7 getirir.<\/p>\n<h3><span id=\"Kodu_da_unutma\">Kodu da unutma<\/span><\/h3>\n<p>Bazen sorun veritaban\u0131nda de\u011fil, sorguyu in\u015fa eden kod sat\u0131rlar\u0131nda sakl\u0131d\u0131r. Gereksiz join, aceleye gelmi\u015f bir LIKE ko\u015fulu, sayfaland\u0131rman\u0131n yanl\u0131\u015f uygulanmas\u0131\u2026 Kod taraf\u0131nda k\u00fc\u00e7\u00fck d\u00fczenlemelerle veritaban\u0131 mucize i\u015fler. Bu noktada uygulama katman\u0131ndaki \u00f6nbellek kurallar\u0131, i\u00e7erik da\u011f\u0131t\u0131m\u0131 ve HTML cache gibi ba\u015fl\u0131klar da devreye girer. E\u011fer bu tarafla daha detayl\u0131 ilgilenmek istersen, <a href=\"https:\/\/www.dchost.com\/blog\/wordpress-icin-cdn-onbellek-kurallari-nasil-kurulur-woocommercede-html-cache-bypass-ve-edge-ayarlariyla-uctan-uca-hiz\/\">WordPress ve WooCommerce\u2019de CDN \u00f6nbellek kurallar\u0131<\/a> yaz\u0131s\u0131 h\u0131z\u0131n d\u0131\u015f \u00e7eperini toparlamana yard\u0131m eder.<\/p>\n<h2 id=\"section-9\"><span id=\"Kapanis_Tuning_Bir_Maraton_Sprint_Degil\">Kapan\u0131\u015f: Tuning Bir Maraton, Sprint De\u011fil<\/span><\/h2>\n<p>Bug\u00fcn anlatmaya \u00e7al\u0131\u015ft\u0131\u011f\u0131m \u015fey, WooCommerce\u2019in veritaban\u0131 taraf\u0131nda huzur bulman\u0131n s\u0131rlar\u0131. <strong>Buffer Pool<\/strong> ile belle\u011fi do\u011fru kullan, <strong>indekslerle<\/strong> s\u0131k kullan\u0131lan yollar\u0131 k\u0131salt ve <strong>slow query analizi<\/strong> ile sorunu b\u00fcy\u00fcmeden yakala. Hepsi kendi aralar\u0131nda anla\u015f\u0131nca, site ak\u015fam trafi\u011fini bir pazar gezmesi gibi sakince atlat\u0131r. Tuning tek seferlik bir i\u015f de\u011fil; ritim tutturdu\u011funda ger\u00e7ek meyveyi toplars\u0131n.<\/p>\n<p>Pratik birka\u00e7 notla kapatay\u0131m. B\u00fcy\u00fck de\u011fi\u015fikliklerden \u00f6nce yedek al; minik ayarlarla ilerle, her ad\u0131mda tekrar \u00f6l\u00e7; ekipteki herkesin g\u00f6rebilece\u011fi basit bir dashboard haz\u0131rla; kampanya \u00f6ncesi k\u00fc\u00e7\u00fck bir stres testi yap. E\u011fer bug\u00fcn birka\u00e7 ayar\u0131 dener ve bir iki sorguyu iyile\u015ftirirsen, muhtemelen yar\u0131n kasada daha az bekleme g\u00f6receksin. Umar\u0131m bu yaz\u0131 sana ilham olmu\u015ftur. Sorular\u0131n\u0131, ya\u015fad\u0131\u011f\u0131n ilgin\u00e7 vakalar\u0131 ve akl\u0131na tak\u0131lan ufak ayr\u0131nt\u0131lar\u0131 payla\u015fmak istersen ne g\u00fczel. Bir sonraki yaz\u0131da g\u00f6r\u00fc\u015f\u00fcr\u00fcz; bu arada kahveni tazelemeyi unutma.<\/p>\n<h2 id=\"section-10\"><span id=\"Kaynakca_ve_Faydali_Okumalar\">Kaynak\u00e7a ve Faydal\u0131 Okumalar<\/span><\/h2>\n<p>Teknik ayr\u0131nt\u0131lar\u0131 sade tutmaya \u00e7al\u0131\u015ft\u0131m, ama derinle\u015fmek istersen buralar g\u00fczel ba\u015flang\u0131\u00e7 noktalar\u0131: <a href=\"https:\/\/dev.mysql.com\/doc\/refman\/8.0\/en\/innodb-buffer-pool.html\" rel=\"nofollow noopener\" target=\"_blank\">InnoDB Buffer Pool\u2019un resmi anlat\u0131m\u0131<\/a>, <a href=\"https:\/\/dev.mysql.com\/doc\/refman\/8.0\/en\/explain-output.html\" rel=\"nofollow noopener\" target=\"_blank\">EXPLAIN \u00e7\u0131kt\u0131s\u0131na pratik bir bak\u0131\u015f<\/a> ve <a href=\"https:\/\/www.percona.com\/software\/percona-toolkit\/pt-query-digest\" rel=\"nofollow noopener\" target=\"_blank\">pt-query-digest ile slow log \u00f6zetleme<\/a>. \u0130\u00e7erideki b\u00fcy\u00fck resmi g\u00f6rmek i\u00e7in ise \u015fu \u00fc\u00e7 rehber iyi arkada\u015fl\u0131k eder: <a href=\"https:\/\/www.dchost.com\/blog\/wordpress-icin-sunucu-tarafi-optimizasyon-php-fpm-opcache-redis-ve-mysql-ile-neyi-ne-zaman-nasil-ayarlamalisin\/\">WordPress i\u00e7in sunucu taraf\u0131 optimizasyon<\/a>, <a href=\"https:\/\/www.dchost.com\/blog\/woocommerce-kapasite-planlama-rehberi-vcpu-ram-iops-nasil-hesaplanir\/\">WooCommerce kapasite planlama rehberi<\/a> ve <a href=\"https:\/\/www.dchost.com\/blog\/mysql-mariadb-yedekleme-stratejileri-mysqldump-mi-xtrabackup-mi-ve-point%E2%80%91in%E2%80%91time-recovery-ne-zaman\/\">MySQL\/MariaDB yedekleme stratejileri<\/a>.<\/p>\n<\/div>","protected":false},"excerpt":{"rendered":"<p>\u0130&ccedil;indekiler1 Kasa Kuyru\u011fu Uzad\u0131\u011f\u0131nda Hissetti\u011fin O Gerginlik: WooCommerce ve MySQL\u2019i Sakinle\u015ftirme Yolculu\u011fu2 WooCommerce Trafi\u011fi Neden MySQL\u2019de D\u00fc\u011f\u00fcmlenir?2.1 Okuma-yazma dengesi: Sepetteki her t\u0131k bir izi b\u0131rak\u0131r2.2 \u00d6l\u00e7meden ayar olmaz: K\u00fc\u00e7\u00fck bir temel foto\u011fraf \u00e7ek3 Buffer Pool: InnoDB\u2019nin Nefesi Ne Kadar Uzun Olmal\u0131?3.1 Ne kadar RAM ay\u0131rmal\u0131? \u201cYeterince b\u00fcy\u00fck, ama a\u015f\u0131r\u0131 de\u011fil\u201d dengesi3.2 Buffer Pool par\u00e7alar\u0131, arka [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":1359,"comment_status":"","ping_status":"","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[26],"tags":[],"class_list":["post-1358","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-teknoloji"],"_links":{"self":[{"href":"https:\/\/www.dchost.com\/blog\/wp-json\/wp\/v2\/posts\/1358","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.dchost.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.dchost.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.dchost.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.dchost.com\/blog\/wp-json\/wp\/v2\/comments?post=1358"}],"version-history":[{"count":0,"href":"https:\/\/www.dchost.com\/blog\/wp-json\/wp\/v2\/posts\/1358\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.dchost.com\/blog\/wp-json\/wp\/v2\/media\/1359"}],"wp:attachment":[{"href":"https:\/\/www.dchost.com\/blog\/wp-json\/wp\/v2\/media?parent=1358"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.dchost.com\/blog\/wp-json\/wp\/v2\/categories?post=1358"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.dchost.com\/blog\/wp-json\/wp\/v2\/tags?post=1358"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}