[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"me":3,"catalog:tr:database\u002Fmysql-query-optimization":4,"config":214},null,{"field_key":5,"field_name":6,"seniority":7,"topic_key":8,"topic_name":9,"spec_key":7,"spec_name":7,"locale":10,"cell_total":11,"field_total":12,"seniorities":13,"topics":17,"specs":115,"samples":129},"database","Veritabanı","","mysql-query-optimization","Mysql Query Optimization","tr",75,2475,[14,15,16],"junior","mid","senior",[18,21,24,27,30,33,36,39,42,45,48,51,54,55,58,61,64,67,70,73,76,79,82,85,88,91,94,97,100,103,106,109,112],{"key":19,"name":20,"count":11},"backup-recovery","Backup Recovery",{"key":22,"name":23,"count":11},"data-modeling","Data Modeling",{"key":25,"name":26,"count":11},"indexing","Indexing",{"key":28,"name":29,"count":11},"mongodb-aggregation","Mongodb Aggregation",{"key":31,"name":32,"count":11},"mongodb-indexes-queries","Mongodb Indexes Queries",{"key":34,"name":35,"count":11},"mongodb-operations","Mongodb Operations",{"key":37,"name":38,"count":11},"mongodb-replication-sharding","Mongodb Replication Sharding",{"key":40,"name":41,"count":11},"mongodb-schema-modeling","Mongodb Schema Modeling",{"key":43,"name":44,"count":11},"mongodb-transactions-consistency","Mongodb Transactions Consistency",{"key":46,"name":47,"count":11},"mysql-indexes","Mysql Indexes",{"key":49,"name":50,"count":11},"mysql-innodb-transactions","Mysql Innodb Transactions",{"key":52,"name":53,"count":11},"mysql-operations","Mysql Operations",{"key":8,"name":9,"count":11},{"key":56,"name":57,"count":11},"mysql-replication-scaling","Mysql Replication Scaling",{"key":59,"name":60,"count":11},"mysql-types-constraints","Mysql Types Constraints",{"key":62,"name":63,"count":11},"nosql-models","Nosql Models",{"key":65,"name":66,"count":11},"performance-tuning","Performance Tuning",{"key":68,"name":69,"count":11},"pg-indexes","Pg Indexes",{"key":71,"name":72,"count":11},"pg-mvcc-vacuum","Pg Mvcc Vacuum",{"key":74,"name":75,"count":11},"pg-operations","Pg Operations",{"key":77,"name":78,"count":11},"pg-query-planning","Pg Query Planning",{"key":80,"name":81,"count":11},"pg-transactions-locking","Pg Transactions Locking",{"key":83,"name":84,"count":11},"pg-types-constraints","Pg Types Constraints",{"key":86,"name":87,"count":11},"query-optimization","Query Optimization",{"key":89,"name":90,"count":11},"redis-cluster-sharding","Redis Cluster Sharding",{"key":92,"name":93,"count":11},"redis-data-structures","Redis Data Structures",{"key":95,"name":96,"count":11},"redis-expiration-eviction","Redis Expiration Eviction",{"key":98,"name":99,"count":11},"redis-persistence","Redis Persistence",{"key":101,"name":102,"count":11},"redis-replication-sentinel","Redis Replication Sentinel",{"key":104,"name":105,"count":11},"redis-transactions-scripting","Redis Transactions Scripting",{"key":107,"name":108,"count":11},"replication-scaling","Replication Scaling",{"key":110,"name":111,"count":11},"security-access","Security Access",{"key":113,"name":114,"count":11},"transactions-isolation","Transactions Isolation",[116,120,123,126],{"key":117,"name":118,"count":119},"mongodb","MongoDB",450,{"key":121,"name":122,"count":119},"mysql","MySQL",{"key":124,"name":125,"count":119},"postgresql","PostgreSQL",{"key":127,"name":128,"count":119},"redis","Redis",[130,148,161,174,188,201],{"id":131,"topic":9,"difficulty":132,"body":133,"options":134,"correct_key":136,"explanation":147},"019f8780-5f19-7731-a87f-d19df4193c00",1,"MySQL'de bir `SELECT` sorgusunun önüne `EXPLAIN` koyduğunuzda ne olur?",[135,138,141,144],{"key":136,"text":137},"a","Optimizer'ın planını, sorguyu çalıştırmadan gösterir",{"key":139,"text":140},"b","Sorguyu çalıştırır, hem sonuç satırlarını hem de zaman damgalı bir plan özetini döndürür",{"key":142,"text":143},"c","Sorguyu eşdeğer ama daha hızlı bir forma yeniden yazıp onu çalıştırır",{"key":145,"text":146},"d","Yalnızca o tek ifade için query cache'i devre dışı bırakır, diğer tüm ifadeler için ayarı değiştirmeden bırakır","`EXPLAIN`, optimizer'dan sorgu için *kullanacağı* execution plan'ı (erişim tipi, kullanılan index, tahmini satır sayısı vb.) üretmesini ister, sorguyu çalıştırmadan ve veri satırı döndürmeden. Sorguyu yeniden yazıp çalıştırmaz (c) ve query cache'e dokunmaz (d — zaten MySQL 8.0'dan beri query cache yok), ve (b) yanlıştır çünkü düz `EXPLAIN` asla sorgunun kendi sonuç kümesini döndürmez.",{"id":149,"topic":9,"difficulty":132,"body":150,"options":151,"correct_key":139,"explanation":160},"019f8780-5f1a-7d39-b9f1-2b4d61a734e2","Bir meslektaşınız düz `EXPLAIN SELECT * FROM orders WHERE customer_id = 5;` çalıştırmanın aslında `orders` tablosunu tarayacağını ve zamanlama bilgisi döndüreceğini iddia ediyor. Bu doğru mu?",[152,154,156,158],{"key":136,"text":153},"Evet, `EXPLAIN` her zaman sorguyu çalıştırır ve gerçek zamanlamayı ölçer",{"key":139,"text":155},"Hayır, düz `EXPLAIN` yalnızca planı tahmin eder; gerçek zamanlama için `EXPLAIN ANALYZE` gerekir",{"key":142,"text":157},"Evet, ama yalnızca index kullanan ve tam tablo taramasını atlayan sorgular için",{"key":145,"text":159},"Hayır, `EXPLAIN` `SELECT` ifadelerinde asla çalışmaz, yalnızca `UPDATE`\u002F`DELETE`'te çalışır","Düz `EXPLAIN` ifadeyi asla çalıştırmaz — yalnızca optimizer'ın tahmini planını (tahmini satır sayısı, erişim tipi) raporlar. Sorguyu gerçekten çalıştırıp node başına gerçek zamanlama\u002Fsatır sayısı görmek için `EXPLAIN ANALYZE` gerekir (MySQL 8.0.18'den beri mevcut). (a) ve (c) düz `EXPLAIN`'in bir şey çalıştırdığını yanlışlıkla iddia ediyor, (d) ise yanlış — `EXPLAIN`, `SELECT`, `INSERT`, `UPDATE`, `DELETE` ve daha fazlasında çalışır.",{"id":162,"topic":9,"difficulty":132,"body":163,"options":164,"correct_key":142,"explanation":173},"019f8780-5f1c-72aa-aa83-ff80dd8457e3","MySQL 8.0.18'den itibaren, `EXPLAIN ANALYZE`'ın düz `EXPLAIN`'e kıyasla eklediği temel fark nedir?",[165,167,169,171],{"key":136,"text":166},"Yalnızca `INSERT`\u002F`UPDATE`\u002F`DELETE`'te çalışır, `SELECT`'te asla çalışmaz",{"key":139,"text":168},"Sorgu metnini daha okunaklı biçimlendirir, ama `EXPLAIN` ile aynı tahmini sayıları kullanır",{"key":142,"text":170},"Sorguyu gerçekten çalıştırır ve plana ek olarak node-başına gerçek zamanlama ve satır sayılarını raporlar",{"key":145,"text":172},"`EXPLAIN`'in yerini tamamen alır, tek başına `EXPLAIN` artık deprecated'dır","`EXPLAIN ANALYZE` (MySQL 8.0.18+) ifadeyi gerçekten çalıştırır ve her plan node'unu tahminlere ek olarak gerçek ölçülen değerlerle (actual time, actual rows) zenginleştirir, sonra sonuç kümesini atar (planı\u002Fzamanlamaları metin olarak yazdırır, satırları değil). `SELECT`'te çalışır (c doğru, a yanlış), gösterilen sayılar sadece biçimlendirilmiş tahmin değil gerçektir (b yanlış), ve düz `EXPLAIN` hâlâ tam olarak desteklenmektedir, deprecated değildir (d yanlış).",{"id":175,"topic":9,"difficulty":176,"body":177,"options":178,"correct_key":145,"explanation":187},"019f8780-5f1d-78b2-bd98-590101d03c17",2,"`EXPLAIN` çıktısında bir sorgunun `type` sütunu `ALL` gösteriyor. Bu, MySQL'in tabloya nasıl eriştiği hakkında ne anlama gelir?",[179,181,183,185],{"key":136,"text":180},"MySQL, sorguyu karşılamak için mevcut tüm index'leri aynı anda kullandı",{"key":139,"text":182},"MySQL covering index kullandı, bu yüzden tablonun veri sayfalarına hiç dokunmadı",{"key":142,"text":184},"MySQL, unique bir key kullanarak tam olarak bir satırı eşleştirdi, mümkün olan en hızlı erişim tipiyle",{"key":145,"text":186},"MySQL, her satırı sırayla okuyarak tam tablo taraması yaptı","`type: ALL`, `EXPLAIN`'de gösterilen en verimsiz erişim tipidir — aramayı daraltan hiçbir index olmadan her satırın sırayla okunduğu tam tablo taraması anlamına gelir. Bu, `const` (unique\u002Fprimary key ile tam olarak bir satır, c) veya `eq_ref`\u002F`ref`\u002F`range` gibi verimli bir arama'nın tersidir; aynı anda birden çok index kullanmakla (a) ya da covering index'le (b — o, `Extra`'da `ALL` olmayan bir tip ile `Using index` gösterirdi) ilgisizdir.",{"id":189,"topic":9,"difficulty":132,"body":190,"options":191,"correct_key":136,"explanation":200},"019f8780-5f1e-7b15-8563-742470f2aff7","`EXPLAIN` çıktısında, MySQL'in yalnızca değerlendirdiği index'lerin aksine, o tablo erişimi için gerçekten kullanmaya karar verdiği index'i hangi sütun gösterir?",[192,194,196,198],{"key":136,"text":193},"`key`",{"key":139,"text":195},"`possible_keys`",{"key":142,"text":197},"`type`",{"key":145,"text":199},"`ref`","`key` sütunu, MySQL'in gerçekten kullanmayı seçtiği index'i gösterir (ya da hiçbiri seçilmediyse `NULL`). `possible_keys` (b) yalnızca optimizer'ın değerlendirdiği aday index'leri listeler, bunlar gerçekte kullanılanla eşleşmeyebilir. `type` (c) erişim yöntemini (ör. `ref`, `range`, `ALL`) tanımlar, index adını değil, ve `ref` (d) seçilen key'e karşı hangi sütun\u002Fsabitin karşılaştırıldığını gösterir, key'in kimliğini değil.",{"id":202,"topic":9,"difficulty":176,"body":203,"options":204,"correct_key":139,"explanation":213},"019f8780-5f1f-7973-a2db-22935a8ae1f0","`EXPLAIN` çıktısındaki `key_len` sütunu size ne söyler?",[205,207,209,211],{"key":136,"text":206},"Kullanılan index'te saklanan toplam satır sayısı, sorgunun `WHERE` koşulundan bağımsız olarak",{"key":139,"text":208},"MySQL'in satırları aramak için gerçekten kullandığı, seçilen index'in byte cinsinden uzunluğu",{"key":142,"text":210},"Index'lenen kolonun tanımında izin verilen maksimum karakter sayısı",{"key":145,"text":212},"Sorgu için taranan, tablo başına bir tane olan farklı index dosyalarının sayısı","`key_len`, seçilen key'in arama için gerçekte kaç byte'ının kullanıldığını raporlar — bir composite index'in tamamen mi yoksa yalnızca öncü kolon(lar)ıyla mı kullanıldığını doğrulamak için yararlıdır. Bir satır sayısı değildir (a), bir kolon uzunluk sınırı değildir (c — kolon genişliklerinden türese de bu kullanımla ilgilidir, şema sınırıyla değil) ve index dosyalarının sayısını vermez (d). MySQL, `index_merge` erişim yöntemiyle tek bir tablo için birden fazla index'i birleştirebilir; ancak `key_len` yine raporlanan erişimde kullanılan key parçalarını açıklar.",{"fields":215,"seniorities":391,"interview_shapes":392,"locales":397,"oauth":399,"question_count":402,"coach_enabled":403,"jd_match_enabled":403},[216,241,261,278,302,315,324,343,365,372,378,385],{"key":217,"name_tr":218,"name_en":218,"sort":132,"specializations":219},"backend","Backend",[220,223,226,229,232,235,238],{"key":221,"name":222,"field":217},"general","Genel",{"key":224,"name":225,"field":217},"go","Go",{"key":227,"name":228,"field":217},"python","Python",{"key":230,"name":231,"field":217},"java","Java",{"key":233,"name":234,"field":217},"csharp","C#\u002F.NET",{"key":236,"name":237,"field":217},"nodejs","Node.js",{"key":239,"name":240,"field":217},"php","PHP",{"key":242,"name_tr":243,"name_en":243,"sort":176,"specializations":244},"frontend","Frontend",[245,246,249,252,255,258],{"key":221,"name":222,"field":242},{"key":247,"name":248,"field":242},"javascript","JavaScript",{"key":250,"name":251,"field":242},"typescript","TypeScript",{"key":253,"name":254,"field":242},"react","React",{"key":256,"name":257,"field":242},"vue","Vue",{"key":259,"name":260,"field":242},"angular","Angular",{"key":262,"name_tr":263,"name_en":263,"sort":264,"specializations":265},"fullstack","Fullstack",3,[266,267,268,269,270,271,272,273,274,275,276,277],{"key":221,"name":222,"field":262},{"key":224,"name":225,"field":217},{"key":227,"name":228,"field":217},{"key":230,"name":231,"field":217},{"key":233,"name":234,"field":217},{"key":236,"name":237,"field":217},{"key":239,"name":240,"field":217},{"key":247,"name":248,"field":242},{"key":250,"name":251,"field":242},{"key":253,"name":254,"field":242},{"key":256,"name":257,"field":242},{"key":259,"name":260,"field":242},{"key":279,"name_tr":280,"name_en":280,"sort":281,"specializations":282},"devops-cloud","DevOps \u002F Cloud",4,[283,284,287,290,293,296,299],{"key":221,"name":222,"field":279},{"key":285,"name":286,"field":279},"aws","AWS",{"key":288,"name":289,"field":279},"gcp","GCP",{"key":291,"name":292,"field":279},"azure","Azure",{"key":294,"name":295,"field":279},"kubernetes","Kubernetes",{"key":297,"name":298,"field":279},"terraform","Terraform",{"key":300,"name":301,"field":279},"linux","Linux",{"key":303,"name_tr":304,"name_en":304,"sort":305,"specializations":306},"ai-engineer","AI Engineer",5,[307,308,309,312],{"key":221,"name":222,"field":303},{"key":227,"name":228,"field":303},{"key":310,"name":311,"field":303},"llm-rag","LLM\u002FRAG",{"key":313,"name":314,"field":303},"mlops","MLOps",{"key":5,"name_tr":6,"name_en":316,"sort":317,"specializations":318},"Database",6,[319,320,321,322,323],{"key":221,"name":222,"field":5},{"key":124,"name":125,"field":5},{"key":121,"name":122,"field":5},{"key":117,"name":118,"field":5},{"key":127,"name":128,"field":5},{"key":325,"name_tr":326,"name_en":327,"sort":328,"specializations":329},"mobile","Mobil","Mobile",7,[330,331,334,337,340],{"key":221,"name":222,"field":325},{"key":332,"name":333,"field":325},"ios-swift","iOS (Swift)",{"key":335,"name":336,"field":325},"android-kotlin","Android (Kotlin)",{"key":338,"name":339,"field":325},"flutter","Flutter",{"key":341,"name":342,"field":325},"react-native","React Native",{"key":344,"name_tr":345,"name_en":346,"sort":347,"specializations":348},"security","Güvenlik","Security",8,[349,350,353,356,359,362],{"key":221,"name":222,"field":344},{"key":351,"name":352,"field":344},"appsec","AppSec",{"key":354,"name":355,"field":344},"offensive-pentest","Offensive \u002F Pentest",{"key":357,"name":358,"field":344},"cloud-security","Cloud Security",{"key":360,"name":361,"field":344},"devsecops","DevSecOps",{"key":363,"name":364,"field":344},"blue-team-incident","Blue Team \u002F Incident",{"key":366,"name_tr":367,"name_en":368,"sort":369,"specializations":370},"qa-test-automation","QA \u002F Test Otomasyonu","QA \u002F Test Automation",9,[371],{"key":221,"name":222,"field":366},{"key":373,"name_tr":374,"name_en":374,"sort":375,"specializations":376},"data-engineer","Data Engineer",10,[377],{"key":221,"name":222,"field":373},{"key":379,"name_tr":380,"name_en":381,"sort":382,"specializations":383},"game-dev","Oyun Geliştirme","Game Development",11,[384],{"key":221,"name":222,"field":379},{"key":386,"name_tr":387,"name_en":387,"sort":388,"specializations":389},"ml-engineer","ML Engineer",12,[390],{"key":221,"name":222,"field":386},[14,15,16],{"junior":393,"mid":395,"senior":396},{"questions":394,"median_sec":3},20,{"questions":394,"median_sec":3},{"questions":394,"median_sec":3},[10,398],"en",[400,401],"google","github",21750,true]