{"id":25856,"date":"2026-09-25T14:12:15","date_gmt":"2026-09-25T21:12:15","guid":{"rendered":"https:\/\/www.pingcap.com\/?post_type=article&#038;p=25856"},"modified":"2026-09-25T14:14:22","modified_gmt":"2026-09-25T21:14:22","slug":"mastering-multi-tenancy-in-tidb-for-cloud-applications","status":"publish","type":"article","link":"https:\/\/www.pingcap.com\/ko\/article\/mastering-multi-tenancy-in-tidb-for-cloud-applications\/","title":{"rendered":"Monitoring and Troubleshooting Multi-Tenant TiDB Performance"},"content":{"rendered":"<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Key_Takeaways\"><\/span><strong>\ud575\uc2ec \uc694\uc57d<\/strong><span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Top SQL ranks queries by CPU consumption, which is usually the fastest route from &#8220;everything is slow&#8221; to one offending query.<\/li>\n\n\n\n<li>Map each tenant to a resource group so every query carries a tenant label and a quota.<\/li>\n\n\n\n<li>Runaway query rules catch a noisy tenant automatically: kill, deprioritize, or move its heaviest queries to a smaller group.<\/li>\n\n\n\n<li>Review Top SQL on a schedule. Tenant workloads drift slowly worse as their data grows, long before an alert fires.<\/li>\n<\/ul>\n<\/blockquote>\n\n\n\n<p class=\"wp-block-paragraph\">One tenant running an unindexed query in a loop can degrade response times for every other tenant sharing that cluster, and without the right tools, the first sign of trouble is a wave of unrelated-looking complaints. This guide covers finding that tenant fast with <a href=\"https:\/\/www.pingcap.com\/ko\/what-is-tidb\/\">\ud2f0DB<\/a>&#8216;s built-in diagnostics, then keeping it from happening again. If you haven&#8217;t chosen an isolation model yet, start with the <a href=\"https:\/\/www.pingcap.com\/ko\/article\/optimizing-multi-tenant-data-architecture-with-tidb\/\">multi-tenant architecture guide<\/a>.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"How_Do_You_Diagnose_a_Noisy_Tenant_in_a_Multi-Tenant_TiDB_Deployment\"><\/span><strong>How Do You Diagnose a Noisy Tenant in a Multi-Tenant TiDB Deployment?<\/strong><span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Start with Top SQL, which ranks SQL statements by CPU consumption across TiDB and TiKV instances, to find the query doing the damage. Attribute it to a tenant through the database user or resource group that issued it. Then use the slow query log and EXPLAIN ANALYZE to see where that statement spends its time, and Continuous Profiling if the cost sits inside TiDB or TiKV rather than in the query itself.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Resource_Isolation_With_Resource_Groups\"><\/span><strong>Resource Isolation With Resource Groups<\/strong><span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">TiDB separates compute from storage, so isolating tenants doesn&#8217;t require running separate infrastructure for each one. The mechanism that makes this work at the tenant level is resource control. Each resource group gets a quota in Request Units (RUs), an abstract measure of the CPU, I\/O, and network a statement consumes. When a group exhausts its quota, TiDB queues that group&#8217;s requests rather than letting them take capacity from everyone else.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The simplest mapping gives each tenant its own database user and binds that user to a group:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>CREATE RESOURCE GROUP rg_tenant_acme RU_PER_SEC = 2000 PRIORITY = MEDIUM;\nALTER USER 'acme_app'@'%' RESOURCE GROUP rg_tenant_acme;\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><em>Example quota only. Size RU_PER_SEC from observed usage, and adjust it with ALTER RESOURCE GROUP, which takes effect immediately.<\/em><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Shared-schema applications that pool connections under one database user can bind a group per session with SET RESOURCE GROUP, or per statement with a hint:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>SELECT \/*+ RESOURCE_GROUP(rg_tenant_acme) *\/ * FROM orders WHERE tenant_id = 'acme';<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Two more settings shape how groups compete. PRIORITY decides which group TiKV schedules first when resources run short. BURSTABLE lets a group borrow idle capacity beyond its quota, useful while you are still learning a tenant\u2019s real usage and risky once you rely on the quota to protect everyone else.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Isolation and monitoring work together rather than as substitutes. A quota limits the blast radius of a noisy tenant, but it does nothing about that tenant\u2019s own queries degrading its own performance. See <a href=\"https:\/\/docs.pingcap.com\/tidb\/stable\/tidb-resource-control\/\">resource control<\/a> for the full set of options.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"How_TiDBs_Top_SQL_Solves_the_Noisy-Neighbor_Problem\"><\/span><strong>How TiDB&#8217;s Top SQL Solves the Noisy-Neighbor Problem<\/strong><span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">The noisy-neighbor problem is specific: one tenant\u2019s heavy or poorly optimized query consumes a disproportionate share of cluster resources, degrading performance for every other tenant on the same infrastructure, even though those tenants did nothing wrong.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Top SQL, in TiDB Dashboard, solves the identification half. It surfaces which SQL statements are consuming the most CPU across the cluster, ranked by statement pattern rather than buried in an aggregate metric. With tenants mapped to users or resource groups, the top-ranked statement points straight at a tenant.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Finding the query is not the same as knowing the fix. Each diagnostic tool answers a different question:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Slow query log and statement summary tables:<\/strong> break a statement\u2019s time into processing, waiting, and backoff, which separates a missing index from lock contention.<\/li>\n\n\n\n<li><strong>EXPLAIN ANALYZE:<\/strong> shows actual row counts and time per operator, so you can see where the plan went wrong.<\/li>\n\n\n\n<li><strong>Continuous Profiling:<\/strong> records CPU and memory profiles of TiDB and TiKV internals over time, so you can look back at the exact moment of a spike when the cost sits inside the database rather than in the query.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">The answer decides the fix: an index, a tighter quota, a runaway query rule, or moving that tenant to isolated placement.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Build one habit in: review Top SQL rankings on a schedule instead of waiting for a complaint. A tenant\u2019s query pattern can drift slowly worse over weeks as its own data volume grows, well before it becomes the kind of spike that triggers an alert, and catching that drift early costs far less than diagnosing it after tenants start noticing.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Automate_the_Response_With_Runaway_Query_Rules\"><\/span><strong>Automate the Response With Runaway Query Rules<\/strong><span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Diagnosis after the fact still means someone got paged. Runaway query rules let a resource group act on its own. You define what counts as a runaway query, using execution time (EXEC_ELAPSED), keys processed (PROCESSED_KEYS), or RUs consumed (RU), and what TiDB should do when a query crosses that line:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>DRYRUN:<\/strong> record the match and take no action, for calibrating thresholds.<\/li>\n\n\n\n<li><strong>COOLDOWN:<\/strong> drop the query to the lowest priority so it keeps running without crowding anyone out.<\/li>\n\n\n\n<li><strong>KILL:<\/strong> terminate the query.<\/li>\n\n\n\n<li><strong>SWITCH_GROUP:<\/strong> move the query to a smaller resource group built for heavy work.<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>ALTER RESOURCE GROUP rg_tenant_acme\n  QUERY_LIMIT = (EXEC_ELAPSED = '60s', ACTION = COOLDOWN, WATCH = SIMILAR DURATION = '10m');\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">The WATCH clause is what makes this a noisy-neighbor control rather than a timeout. Once one query trips the rule, TiDB matches later statements with the same pattern (SIMILAR ignores literal values) and applies the action immediately for the watch duration, instead of letting each copy run for 60 seconds first.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Start every new rule in DRYRUN mode and watch what it would have caught before switching it to COOLDOWN or KILL. For one-off problems, QUERY WATCH adds a specific statement or digest spotted in Top SQL to the watch list by hand. See <a href=\"https:\/\/docs.pingcap.com\/tidb\/stable\/tidb-resource-control-runaway-queries\/\">runaway queries<\/a> for the full syntax.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Catch_the_Noisy_Tenant_Before_It_Becomes_an_Incident\"><\/span><strong>Catch the Noisy Tenant Before It Becomes an Incident<\/strong><span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Top SQL turns &#8220;something is slow&#8221; into a specific query and a specific tenant. Resource groups and runaway query rules contain the next one before anyone has to go looking.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><a href=\"https:\/\/tidbcloud.com\/free-trial\/\">Start a free TiDB Cloud Starter cluster<\/a> to try Top SQL against your own multi-tenant workload.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Multi-Tenant_TiDB_Performance_FAQs\"><\/span><strong>Multi-Tenant TiDB Performance FAQs<\/strong><span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>How Do I Identify Which Tenant Is Causing a Performance Problem?<\/strong><\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Use Top SQL to rank statements by CPU consumption across the cluster.<\/li>\n\n\n\n<li>Trace the top statement to its tenant through the user or resource group that issued it.<\/li>\n\n\n\n<li>Use the slow query log and EXPLAIN ANALYZE to see where the time goes.<\/li>\n\n\n\n<li>Tagging queries with a tenant ID in application code speeds this up further.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Can One Tenant&#8217;s Workload Affect Other Tenants in TiDB?<\/strong><\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Yes, if tenants share compute and storage without quotas.<\/li>\n\n\n\n<li>Resource groups cap each tenant\u2019s RU consumption and queue it past the limit.<\/li>\n\n\n\n<li>Placement policies can pin a tenant\u2019s data to dedicated TiKV nodes.<\/li>\n\n\n\n<li>Top SQL and runaway query rules catch what slips through.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>How Do Resource Groups Stop a Noisy Tenant?<\/strong><\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Each group gets an RU quota; requests queue once the quota runs out.<\/li>\n\n\n\n<li>PRIORITY decides which group TiKV schedules first under pressure.<\/li>\n\n\n\n<li>Runaway query rules kill, deprioritize, or reroute queries that cross a threshold.<\/li>\n\n\n\n<li>Bind groups per user, per session, or per statement with a hint.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Can TiDB Show Resource Usage per Tenant?<\/strong><\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>TiDB has no built-in tenant concept.<\/li>\n\n\n\n<li>Map one resource group per tenant, and TiDB tracks RU consumption per group.<\/li>\n\n\n\n<li>Top SQL shows per-statement CPU, which maps to tenants through users or groups.<\/li>\n\n\n\n<li>Tenant IDs in query comments or connection attributes fill any remaining gaps.<\/li>\n<\/ul>","protected":false},"excerpt":{"rendered":"<p>Discover how TiDB optimizes multi-tenancy with resource isolation, scalability, and performance monitoring for cloud-native apps.<\/p>","protected":false},"author":218,"featured_media":0,"template":"","class_list":["post-25856","article","type-article","status-publish","hentry"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v28.2 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Monitoring Multi-Tenant TiDB Performance: A Practical Guide<\/title>\n<meta name=\"description\" content=\"Diagnose noisy-neighbor tenants in a multi-tenant TiDB deployment using Top SQL and Continuous Profiling, with resource isolation fixes.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.pingcap.com\/ko\/article\/mastering-multi-tenancy-in-tidb-for-cloud-applications\/\" \/>\n<meta property=\"og:locale\" content=\"ko_KR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Monitoring Multi-Tenant TiDB Performance: A Practical Guide\" \/>\n<meta property=\"og:description\" content=\"Diagnose noisy-neighbor tenants in a multi-tenant TiDB deployment using Top SQL and Continuous Profiling, with resource isolation fixes.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.pingcap.com\/ko\/article\/mastering-multi-tenancy-in-tidb-for-cloud-applications\/\" \/>\n<meta property=\"og:site_name\" content=\"TiDB\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/facebook.com\/pingcap2015\" \/>\n<meta property=\"article:modified_time\" content=\"2026-09-25T21:14:22+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/static.pingcap.com\/files\/2024\/09\/11005522\/Homepage-Ad.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1440\" \/>\n\t<meta property=\"og:image:height\" content=\"714\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:site\" content=\"@PingCAP\" \/>\n<meta name=\"twitter:label1\" content=\"\uc608\uc0c1 \ub418\ub294 \ud310\ub3c5 \uc2dc\uac04\" \/>\n\t<meta name=\"twitter:data1\" content=\"6\ubd84\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.pingcap.com\\\/article\\\/mastering-multi-tenancy-in-tidb-for-cloud-applications\\\/\",\"url\":\"https:\\\/\\\/www.pingcap.com\\\/article\\\/mastering-multi-tenancy-in-tidb-for-cloud-applications\\\/\",\"name\":\"Monitoring Multi-Tenant TiDB Performance: A Practical Guide\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.pingcap.com\\\/#website\"},\"datePublished\":\"2026-09-25T21:12:15+00:00\",\"dateModified\":\"2026-09-25T21:14:22+00:00\",\"description\":\"Diagnose noisy-neighbor tenants in a multi-tenant TiDB deployment using Top SQL and Continuous Profiling, with resource isolation fixes.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.pingcap.com\\\/article\\\/mastering-multi-tenancy-in-tidb-for-cloud-applications\\\/#breadcrumb\"},\"inLanguage\":\"ko-KR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.pingcap.com\\\/article\\\/mastering-multi-tenancy-in-tidb-for-cloud-applications\\\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.pingcap.com\\\/article\\\/mastering-multi-tenancy-in-tidb-for-cloud-applications\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.pingcap.com\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Articles\",\"item\":\"https:\\\/\\\/www.pingcap.com\\\/article\\\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Monitoring and Troubleshooting Multi-Tenant TiDB Performance\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.pingcap.com\\\/#website\",\"url\":\"https:\\\/\\\/www.pingcap.com\\\/\",\"name\":\"TiDB\",\"description\":\"TiDB | SQL at Scale\",\"publisher\":{\"@id\":\"https:\\\/\\\/www.pingcap.com\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.pingcap.com\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"ko-KR\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/www.pingcap.com\\\/#organization\",\"name\":\"PingCAP\",\"url\":\"https:\\\/\\\/www.pingcap.com\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"ko-KR\",\"@id\":\"https:\\\/\\\/www.pingcap.com\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/static.pingcap.com\\\/files\\\/2021\\\/11\\\/pingcap-logo.png\",\"contentUrl\":\"https:\\\/\\\/static.pingcap.com\\\/files\\\/2021\\\/11\\\/pingcap-logo.png\",\"width\":811,\"height\":232,\"caption\":\"PingCAP\"},\"image\":{\"@id\":\"https:\\\/\\\/www.pingcap.com\\\/#\\\/schema\\\/logo\\\/image\\\/\"},\"sameAs\":[\"https:\\\/\\\/facebook.com\\\/pingcap2015\",\"https:\\\/\\\/x.com\\\/PingCAP\",\"https:\\\/\\\/linkedin.com\\\/company\\\/pingcap\",\"https:\\\/\\\/youtube.com\\\/channel\\\/UCuq4puT32DzHKT5rU1IZpIA\"]}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Monitoring Multi-Tenant TiDB Performance: A Practical Guide","description":"Diagnose noisy-neighbor tenants in a multi-tenant TiDB deployment using Top SQL and Continuous Profiling, with resource isolation fixes.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.pingcap.com\/ko\/article\/mastering-multi-tenancy-in-tidb-for-cloud-applications\/","og_locale":"ko_KR","og_type":"article","og_title":"Monitoring Multi-Tenant TiDB Performance: A Practical Guide","og_description":"Diagnose noisy-neighbor tenants in a multi-tenant TiDB deployment using Top SQL and Continuous Profiling, with resource isolation fixes.","og_url":"https:\/\/www.pingcap.com\/ko\/article\/mastering-multi-tenancy-in-tidb-for-cloud-applications\/","og_site_name":"TiDB","article_publisher":"https:\/\/facebook.com\/pingcap2015","article_modified_time":"2026-09-25T21:14:22+00:00","og_image":[{"width":1440,"height":714,"url":"https:\/\/static.pingcap.com\/files\/2024\/09\/11005522\/Homepage-Ad.png","type":"image\/png"}],"twitter_card":"summary_large_image","twitter_site":"@PingCAP","twitter_misc":{"\uc608\uc0c1 \ub418\ub294 \ud310\ub3c5 \uc2dc\uac04":"6\ubd84"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/www.pingcap.com\/article\/mastering-multi-tenancy-in-tidb-for-cloud-applications\/","url":"https:\/\/www.pingcap.com\/article\/mastering-multi-tenancy-in-tidb-for-cloud-applications\/","name":"Monitoring Multi-Tenant TiDB Performance: A Practical Guide","isPartOf":{"@id":"https:\/\/www.pingcap.com\/#website"},"datePublished":"2026-09-25T21:12:15+00:00","dateModified":"2026-09-25T21:14:22+00:00","description":"Diagnose noisy-neighbor tenants in a multi-tenant TiDB deployment using Top SQL and Continuous Profiling, with resource isolation fixes.","breadcrumb":{"@id":"https:\/\/www.pingcap.com\/article\/mastering-multi-tenancy-in-tidb-for-cloud-applications\/#breadcrumb"},"inLanguage":"ko-KR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.pingcap.com\/article\/mastering-multi-tenancy-in-tidb-for-cloud-applications\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.pingcap.com\/article\/mastering-multi-tenancy-in-tidb-for-cloud-applications\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.pingcap.com\/"},{"@type":"ListItem","position":2,"name":"Articles","item":"https:\/\/www.pingcap.com\/article\/"},{"@type":"ListItem","position":3,"name":"Monitoring and Troubleshooting Multi-Tenant TiDB Performance"}]},{"@type":"WebSite","@id":"https:\/\/www.pingcap.com\/#website","url":"https:\/\/www.pingcap.com\/","name":"\ud2f0DB","description":"TiDB | SQL at Scale","publisher":{"@id":"https:\/\/www.pingcap.com\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.pingcap.com\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"ko-KR"},{"@type":"Organization","@id":"https:\/\/www.pingcap.com\/#organization","name":"PingCAP","url":"https:\/\/www.pingcap.com\/","logo":{"@type":"ImageObject","inLanguage":"ko-KR","@id":"https:\/\/www.pingcap.com\/#\/schema\/logo\/image\/","url":"https:\/\/static.pingcap.com\/files\/2021\/11\/pingcap-logo.png","contentUrl":"https:\/\/static.pingcap.com\/files\/2021\/11\/pingcap-logo.png","width":811,"height":232,"caption":"PingCAP"},"image":{"@id":"https:\/\/www.pingcap.com\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/facebook.com\/pingcap2015","https:\/\/x.com\/PingCAP","https:\/\/linkedin.com\/company\/pingcap","https:\/\/youtube.com\/channel\/UCuq4puT32DzHKT5rU1IZpIA"]}]}},"card_markup":"        <a class=\"card-article\" href=\"https:\/\/www.pingcap.com\/ko\/article\/mastering-multi-tenancy-in-tidb-for-cloud-applications\/\">            <h3>Monitoring and Troubleshooting Multi-Tenant TiDB Performance<\/h3>            <p>Discover how TiDB optimizes multi-tenancy with resource isolation, scalability, and performance monitoring for cloud-native apps.<\/p>        <\/a>","_links":{"self":[{"href":"https:\/\/www.pingcap.com\/ko\/wp-json\/wp\/v2\/article\/25856","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.pingcap.com\/ko\/wp-json\/wp\/v2\/article"}],"about":[{"href":"https:\/\/www.pingcap.com\/ko\/wp-json\/wp\/v2\/types\/article"}],"author":[{"embeddable":true,"href":"https:\/\/www.pingcap.com\/ko\/wp-json\/wp\/v2\/users\/218"}],"wp:attachment":[{"href":"https:\/\/www.pingcap.com\/ko\/wp-json\/wp\/v2\/media?parent=25856"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}