[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"me":3,"catalog:en:database\u002Fperformance-tuning":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","Database","","performance-tuning","Performance Tuning","en",75,2475,[14,15,16],"junior","mid","senior",[18,21,24,27,30,33,36,39,42,45,48,51,54,57,60,63,66,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":55,"name":56,"count":11},"mysql-query-optimization","Mysql Query Optimization",{"key":58,"name":59,"count":11},"mysql-replication-scaling","Mysql Replication Scaling",{"key":61,"name":62,"count":11},"mysql-types-constraints","Mysql Types Constraints",{"key":64,"name":65,"count":11},"nosql-models","Nosql Models",{"key":8,"name":9,"count":11},{"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,162,175,188,201],{"id":131,"topic":9,"difficulty":132,"body":133,"options":134,"correct_key":136,"explanation":147},"019f56bb-b683-70af-b4d2-53a5dd2c602b",1,"Why do busy applications keep a pool of database connections open and reuse them instead of opening a fresh connection for each request?",[135,138,141,144],{"key":136,"text":137},"a","Creating a connection each time is costly (TCP setup, authentication, a new server-side backend), so reuse avoids that work",{"key":139,"text":140},"b","A single pooled connection can encrypt the network traffic, while separate connections are always sent in plaintext",{"key":142,"text":143},"c","The pool splits one query across many connections so a single slow query finishes several times faster",{"key":145,"text":146},"d","The database refuses to run more than one query on the same connection, so without a pool most queries would simply fail","Opening a connection involves a TCP handshake, authentication and allocating a server-side process or thread — tens of milliseconds that dwarf a simple query. A pool keeps warm connections and hands them out, so that cost is paid once. Pooling does not parallelize a single query (c) and has nothing to do with encryption (b).",{"id":149,"topic":9,"difficulty":150,"body":151,"options":152,"correct_key":142,"explanation":161},"019f56bb-b686-7448-9b4b-b440969db256",2,"A service under load starts failing with 'too many connections' errors, even though CPU and disk on the database server are barely used. Each request opens its own direct connection. What is the most appropriate fix?",[153,155,157,159],{"key":136,"text":154},"Raise the operating system's file-descriptor limit on the application servers to a very high value and keep opening connections",{"key":139,"text":156},"Switch every query to SELECT * so the database spends less time planning each individual statement",{"key":142,"text":158},"Put a connection pool in front of the database and cap concurrent connections to a sane number",{"key":145,"text":160},"Give the database user superuser privileges so its connections are not counted against the limit","Each backend connection consumes memory and a server process, and the server enforces a hard max_connections limit; opening one per request exhausts it. A pool bounds and reuses connections, matching demand to what the server can hold. Superuser does not exempt you from the limit (d), and SELECT * only makes things worse (b).",{"id":163,"topic":9,"difficulty":132,"body":164,"options":165,"correct_key":139,"explanation":174},"019f56bb-b688-777e-9088-4d4457644ee7","Most relational databases keep a large in-memory cache of recently used data pages. What is the main purpose of this cache?",[166,168,170,172],{"key":136,"text":167},"To store the database's user accounts and permission rules so that authentication stays fast",{"key":139,"text":169},"To serve frequently accessed data from RAM and avoid slow reads from disk",{"key":142,"text":171},"To keep a durable backup copy of the data so it survives a total disk failure",{"key":145,"text":173},"To compress old data pages so the table takes up less space on disk over time","The buffer\u002Fpage cache holds hot data pages in memory so repeated reads are satisfied without touching disk, which is orders of magnitude slower. It is not a durability mechanism — that is the job of the write-ahead log and on-disk files (c) — and it does not compress data or hold auth rules.",{"id":176,"topic":9,"difficulty":150,"body":177,"options":178,"correct_key":145,"explanation":187},"019f56bb-b68a-7809-8ec6-d1bd070e2d8e","A report query takes 4 seconds the very first time it runs after the database restarts, then only 80 ms on the next few runs with the same data and no other changes. What most likely explains this?",[179,181,183,185],{"key":136,"text":180},"The query planner rewrote the query into a faster form after seeing it run once",{"key":139,"text":182},"The first run had to rebuild every index on the table from scratch before it was allowed to return any rows",{"key":142,"text":184},"The database compiled the SQL text into native machine code after the first execution",{"key":145,"text":186},"The first run read the data pages from disk into the memory cache; later runs found them already cached","On a cold cache the first execution pays for physical disk reads to load the needed pages into the buffer cache; subsequent runs hit those pages in RAM and skip the disk. The plan and the compiled statement are not what changed here, and indexes are not rebuilt on read (b).",{"id":189,"topic":9,"difficulty":132,"body":190,"options":191,"correct_key":136,"explanation":200},"019f56bb-b68b-7ac6-bbb7-1b4be43cc230","For a typical database workload, which resource is most often the primary performance bottleneck?",[192,194,196,198],{"key":136,"text":193},"Disk I\u002FO — reading and writing data pages is much slower than operating on data already in memory",{"key":139,"text":195},"The amount of available RAM, since any query whose working set fits in memory can never become slow",{"key":142,"text":197},"CPU clock speed, since every query is almost always CPU-bound rather than I\u002FO-bound",{"key":145,"text":199},"The total number of tables in the schema, because the engine must scan every table's header on each query","Databases work with far more data than fits in CPU registers, and disk (even SSD) is orders of magnitude slower than RAM, so I\u002FO usually dominates. That is exactly why caching hot data in memory matters. Most OLTP queries are I\u002FO-bound, not CPU-bound (c), and table counts are not the bottleneck (d).",{"id":202,"topic":9,"difficulty":150,"body":203,"options":204,"correct_key":142,"explanation":213},"019f56bb-b68c-74f5-8020-b13764223f61","An import loads 10,000 rows by sending 10,000 separate `INSERT INTO t (...) VALUES (...)` statements, each in its own network call. Which change most directly reduces the total time?",[205,207,209,211],{"key":136,"text":206},"Add several more indexes on the target table so that each individual INSERT is written to disk faster",{"key":139,"text":208},"Rename the columns to shorter names so each INSERT statement is a bit smaller to parse",{"key":142,"text":210},"Group the rows into multi-row INSERTs (or one bulk statement) so far fewer round trips are needed",{"key":145,"text":212},"Wrap each individual INSERT in its own separate transaction to isolate any single failure","The dominant cost here is 10,000 network round trips plus per-statement parsing. Batching many rows into each INSERT (or a bulk-load command) collapses those round trips into a handful. Adding indexes makes each INSERT slower, not faster (a), and per-row transactions add commit overhead (d).",{"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":150,"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":316,"name_en":6,"sort":317,"specializations":318},"Veritabanı",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},[398,10],"tr",[400,401],"google","github",21750,true]