{"id":25283,"date":"2025-02-19T14:43:02","date_gmt":"2025-02-19T22:43:02","guid":{"rendered":"https:\/\/www.pingcap.com\/?p=25283"},"modified":"2025-02-19T14:43:04","modified_gmt":"2025-02-19T22:43:04","slug":"tidb-ddl-optimizations-unleashing-50x-performance-increases","status":"publish","type":"post","link":"https:\/\/www.pingcap.com\/ko\/blog\/tidb-ddl-optimizations-unleashing-50x-performance-increases\/","title":{"rendered":"Unleashing 50x Performance: In-Depth Analysis of TiDB DDL Framework Optimizations"},"content":{"rendered":"<p>Managing <a href=\"https:\/\/docs.pingcap.com\/tidb\/stable\/dev-guide-schema-design-overview\">schema changes<\/a> in traditional databases often leads to downtime, blocking, and operational complexity. <a href=\"https:\/\/www.pingcap.com\/ko\/tidb-self-managed\/\">\ud2f0DB<\/a> has long simplified this process with its <a href=\"https:\/\/www.pingcap.com\/ko\/blog\/effective-online-ddl-database-schema-changes-zero-downtime\/\">online DDL<\/a> capabilities, allowing developers to evolve their databases without disrupting applications. <\/p>\n\n\n\n<p>As user bases and data volumes have surged, however, index creation was increasingly becoming a performance bottleneck. To address this, we first achieved a 10x speed improvement in index building. Then, by migrating index creation to a distributed framework, we further boosted indexing efficiency for large tables. <\/p>\n\n\n\n<p>Today, with the rise of SaaS applications and the challenge of managing millions of tables within a single TiDB cluster, our <a href=\"https:\/\/docs.pingcap.com\/tidb\/stable\/ddl-introduction\">DDL framework<\/a> faces even greater demands. We&#8217;ve made scalability and DDL execution efficiency a top priority, ensuring that TiDB can handle massive DDL operations with high throughput while maintaining rock-solid stability under heavy concurrency and load. The following results showcased in this blog highlight these key advancements.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"TiDB_82_5x_Average_DDL_QPS_Increase\"><\/span><strong>TiDB 8.2: 5x Average DDL QPS Increase<\/strong><span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p>After extensive performance testing, <a href=\"https:\/\/docs.pingcap.com\/tidb\/stable\/release-8.2.0\">TiDB 8.2<\/a> DDL shows a 5x QPS improvement over <a href=\"https:\/\/docs.pingcap.com\/tidb\/stable\/release-8.1.0\">TiDB 8.1<\/a>, from 7 to 38 (peaking at 80), demonstrating successful DDL optimization.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"724\" src=\"https:\/\/static.pingcap.com\/files\/2025\/02\/19142403\/image-2-1024x724.png\" alt=\"TiDB 8.2: Fivefold average DDL QPS increase.\" class=\"wp-image-25297\" srcset=\"https:\/\/static.pingcap.com\/files\/2025\/02\/19142403\/image-2-1024x724.png 1024w, https:\/\/static.pingcap.com\/files\/2025\/02\/19142403\/image-2-300x212.png 300w, https:\/\/static.pingcap.com\/files\/2025\/02\/19142403\/image-2-768x543.png 768w, https:\/\/static.pingcap.com\/files\/2025\/02\/19142403\/image-2.png 1080w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n<\/div>\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"TiDB_83_Another_4x_Average_DDL_QPS_Increase\"><\/span><strong>TiDB 8.3: Another 4x Average DDL QPS Increase<\/strong><span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p>Significant improvement could be seen in <a href=\"https:\/\/docs.pingcap.com\/tidb\/stable\/release-8.3.0\">TiDB 8.3 <\/a>DDL performance. This release achieved ~180 average and ~200 peak QPS, a near 5x increase over TiDB 8.2, demonstrating substantial DDL optimization and increased stability.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"354\" src=\"https:\/\/static.pingcap.com\/files\/2025\/02\/19142458\/image-3-1024x354.png\" alt=\"TiDB 8.3: Another fourfold DDL average QPS increase.\" class=\"wp-image-25298\" srcset=\"https:\/\/static.pingcap.com\/files\/2025\/02\/19142458\/image-3-1024x354.png 1024w, https:\/\/static.pingcap.com\/files\/2025\/02\/19142458\/image-3-300x104.png 300w, https:\/\/static.pingcap.com\/files\/2025\/02\/19142458\/image-3-768x265.png 768w, https:\/\/static.pingcap.com\/files\/2025\/02\/19142458\/image-3.png 1280w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n<\/div>\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"TiDB_85_50x_Faster_Table_Creation_Times\"><\/span><strong>TiDB 8.5: 50x Faster Table Creation Times<\/strong><span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p><a href=\"https:\/\/docs.pingcap.com\/tidb\/stable\/release-8.5.0\">TiDB 8.5<\/a> significantly improves DDL performance, especially for a large number of databases. Enabling Fast Create Table optimization doubles DDL QPS and overall throughput. Million-table tests show TiDB 8.5 creates tables 50x faster than <a href=\"https:\/\/docs.pingcap.com\/tidb\/stable\/release-7.5.0\">TiDB 7.5<\/a>. Testing on the below cluster generated the following results:<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><tbody><tr><td>Node type<\/td><td>Number<\/td><td>Specifications<\/td><\/tr><tr><td>PD<\/td><td>1<\/td><td>8C16G<\/td><\/tr><tr><td>\ud2f0DB<\/td><td>3<\/td><td>16C32G<\/td><\/tr><tr><td>TiKV<\/td><td>3<\/td><td>8C32G<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p><strong>Note: <\/strong>A 16-core, 32GB TiDB node is used here due to the memory requirements of statistics during testing. Memory usage for statistics is being actively reduced. Adjust table counts based on your own node specifications.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"381\" src=\"https:\/\/static.pingcap.com\/files\/2025\/02\/19142517\/image-4-1024x381.png\" alt=\"\" class=\"wp-image-25299\" srcset=\"https:\/\/static.pingcap.com\/files\/2025\/02\/19142517\/image-4-1024x381.png 1024w, https:\/\/static.pingcap.com\/files\/2025\/02\/19142517\/image-4-300x112.png 300w, https:\/\/static.pingcap.com\/files\/2025\/02\/19142517\/image-4-768x286.png 768w, https:\/\/static.pingcap.com\/files\/2025\/02\/19142517\/image-4.png 1080w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n<\/div>\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"TiDB_DDL_An_Overview_of_Underlying_Principles\"><\/span>TiDB DDL: An Overview of Underlying Principles<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p>Understanding TiDB DDL execution is crucial before exploring optimization strategies. TiDB, a <a href=\"https:\/\/www.pingcap.com\/ko\/blog\/why-distributed-sql-databases-elevate-modern-app-dev\/\">distributed SQL database<\/a> with online DDL capabilities, allows schema modifications without disrupting transactions. This section outlines the online DDL process, from SQL parsing and job creation to background execution, setting the stage for discussing optimizations.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">DDL Statement Task Running Process<\/h3>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"424\" src=\"https:\/\/static.pingcap.com\/files\/2025\/02\/19142615\/image-5-1024x424.png\" alt=\"A diagram depicting TiDB DDL execution flow.\" class=\"wp-image-25300\" srcset=\"https:\/\/static.pingcap.com\/files\/2025\/02\/19142615\/image-5-1024x424.png 1024w, https:\/\/static.pingcap.com\/files\/2025\/02\/19142615\/image-5-300x124.png 300w, https:\/\/static.pingcap.com\/files\/2025\/02\/19142615\/image-5-768x318.png 768w, https:\/\/static.pingcap.com\/files\/2025\/02\/19142615\/image-5.png 1114w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n<\/div>\n\n\n<p class=\"has-text-align-center\"><em>Figure 1. A diagram depicting TiDB DDL execution flow.<\/em><\/p>\n\n\n\n<p>TiDB processes a <code>CREATE TABLE<\/code> statement by parsing SQL, creating a DDL task, scheduling and executing it with Job Workers (potentially in parallel for reorg tasks), tracking progress, and returning the result.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Introduction to Online Schema Changes<\/h3>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"565\" src=\"https:\/\/static.pingcap.com\/files\/2025\/02\/19142645\/image-6-1024x565.png\" alt=\"A diagram representing how online schema changes work in TiDB.\" class=\"wp-image-25301\" srcset=\"https:\/\/static.pingcap.com\/files\/2025\/02\/19142645\/image-6-1024x565.png 1024w, https:\/\/static.pingcap.com\/files\/2025\/02\/19142645\/image-6-300x165.png 300w, https:\/\/static.pingcap.com\/files\/2025\/02\/19142645\/image-6-768x423.png 768w, https:\/\/static.pingcap.com\/files\/2025\/02\/19142645\/image-6.png 1041w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n<\/div>\n\n\n<p class=\"has-text-align-center\"><em>Figure 2. A diagram representing how online schema changes work in TiDB.<\/em><\/p>\n\n\n\n<p>Job Workers execute TiDB&#8217;s <a href=\"https:\/\/static.googleusercontent.com\/media\/research.google.com\/zh-CN\/\/pubs\/archive\/41376.pdf\">online schema changes<\/a>, applying single-step schema changes. They also notify the <a href=\"https:\/\/docs.pingcap.com\/tidb\/stable\/tidb-scheduling\">Placement Driver (PD)<\/a>, which coordinates updates across all TiDB nodes (using etcd) and requires nodes to acquire Metadata Locks (MDLs). Finally, Job Workers ensure all nodes synchronize before proceeding to the next step, thereby maintaining a two-state invariant and preventing disruption to ongoing transactions.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"An_Exploration_of_Engineering_Best_Practices\"><\/span>An Exploration of Engineering Best Practices<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"479\" src=\"https:\/\/static.pingcap.com\/files\/2025\/02\/19142713\/image-7-1024x479.png\" alt=\"TiDB DDL milestones.\" class=\"wp-image-25302\" srcset=\"https:\/\/static.pingcap.com\/files\/2025\/02\/19142713\/image-7-1024x479.png 1024w, https:\/\/static.pingcap.com\/files\/2025\/02\/19142713\/image-7-300x140.png 300w, https:\/\/static.pingcap.com\/files\/2025\/02\/19142713\/image-7-768x359.png 768w, https:\/\/static.pingcap.com\/files\/2025\/02\/19142713\/image-7.png 1080w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n<\/div>\n\n\n<p class=\"has-text-align-center\"><em>Figure 3. TiDB DDL milestones.<\/em><\/p>\n\n\n\n<p>Guided by customer needs, an iterative approach, and a principle of minimal impact, TiDB&#8217;s DDL optimization roadmap breaks down complex tasks into independent, deliverable sub-tasks, enabling continuous improvement and rapid delivery of targeted solutions.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Optimization Approaches<\/h3>\n\n\n\n<p>Faced with large-scale table creation bottlenecks, TiDB strategically optimized DDL operations. It focused on &#8220;Quick Table Creation&#8221; through targeted improvements, continuous iteration (reducing million-table creation time from over 4 hours to 1.5-2 hours), code refactoring, and a future distributed DDL framework for greater performance.<\/p>\n\n\n\n<p>The following table illustrates the optimization achieved in TiDB 8.1.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"187\" src=\"https:\/\/static.pingcap.com\/files\/2025\/02\/19142729\/image-8-1024x187.png\" alt=\"\" class=\"wp-image-25303\" style=\"width:684px;height:auto\" srcset=\"https:\/\/static.pingcap.com\/files\/2025\/02\/19142729\/image-8-1024x187.png 1024w, https:\/\/static.pingcap.com\/files\/2025\/02\/19142729\/image-8-300x55.png 300w, https:\/\/static.pingcap.com\/files\/2025\/02\/19142729\/image-8-768x140.png 768w, https:\/\/static.pingcap.com\/files\/2025\/02\/19142729\/image-8.png 1080w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n<\/div>\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"TiDBs_Optimization_Journey_An_In-Depth_Look\"><\/span>TiDB&#8217;s Optimization Journey: An In-Depth Look<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p>Following TiDB 8.1&#8217;s table creation improvements, TiDB 8.2 and later versions focused on optimizing general DDL execution for large-scale deployments, targeting increased throughput, stability, and efficiency.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Identifying Performance Bottlenecks<\/h3>\n\n\n\n<p>Analysis of TiDB&#8217;s DDL execution, especially in large-scale, <a href=\"https:\/\/www.pingcap.com\/ko\/blog\/multi-tenant-architecture-enhancing-database-scalability-tidb\/\">multi-tenant environments<\/a> with millions of tables, revealed performance bottlenecks stemming from rapid iteration and the need for a more scalable model. These key bottlenecks were:<\/p>\n\n\n\n<ol start=\"1\" class=\"wp-block-list\">\n<li><strong>Inefficient DDL Task Scheduling:<\/strong> DDL tasks processed sequentially, incurring unnecessary scheduling overhead.<\/li>\n\n\n\n<li><strong>Slow Database\/Table Existence Checks:<\/strong> Schema validation sometimes relied on slower fallback mechanisms.<\/li>\n\n\n\n<li><strong>Underutilized Computing Resources:<\/strong> TiDB nodes were not fully leveraged for concurrent execution.<\/li>\n\n\n\n<li><strong>Inefficient Broadcasting Mechanisms:<\/strong> Schema changes propagated across nodes inefficiently, causing delays.<\/li>\n<\/ol>\n\n\n\n<p>Systematic improvements to these areas transformed TiDB\u2019s DDL execution into a highly efficient, distributed process.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Optimizations Unpacked<\/h3>\n\n\n\n<p>TiDB&#8217;s initial scheduling strategy, processing granular state machine steps for each DDL statement, resulted in excessive scheduling overhead. To address this, several key optimizations were implemented:<\/p>\n\n\n\n<ol start=\"1\" class=\"wp-block-list\">\n<li><strong>Scheduling Granularity Adjustment:<\/strong> Instead of individual steps, entire DDL tasks are now treated as single units, significantly reducing overhead and improving efficiency.<\/li>\n\n\n\n<li><strong>Concurrency Enhancement:<\/strong> Independent DDL tasks now execute in parallel, maximizing resource utilization and shortening overall execution time.<\/li>\n\n\n\n<li><strong>Execution Resource Expansion:<\/strong> The worker pool dedicated to general DDL tasks has been expanded, enabling simultaneous execution of multiple tasks and dramatically increasing throughput.<\/li>\n\n\n\n<li><strong>Scheduling Logic Simplification:<\/strong> Optimized algorithms have streamlined the scheduling process, further enhancing efficiency.<\/li>\n<\/ol>\n\n\n\n<h4 class=\"wp-block-heading\">Optimizing Database and Table Existence Checks<\/h4>\n\n\n\n<p>Efficient table existence checks are crucial for TiDB&#8217;s DDL performance. Previously, TiDB used an in-memory schema cache with a fallback to <a href=\"https:\/\/docs.pingcap.com\/tidb\/stable\/tikv-overview\">TiKV<\/a>, causing delays under high concurrency. To optimize this, the TiKV fallback terminates, relying solely on the schema cache. This is justified by reliable schema cache synchronization on the DDL owner node, pre-computed job dependencies preventing concurrent table creation, sequential job execution ensuring correct schema updates, and schema reloading when a node becomes the DDL owner.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>func checkTableNotExists(d *ddlCtx, t *meta.Meta, schemaID int64, tableName string) error {\n        \/\/ Try to use memory schema info to check first.\n        currVer, err := t.GetSchemaVersion()\n        if err != nil {\n                return err\n        }\n        is := d.infoCache.GetLatest()\n        if is.SchemaMetaVersion() == currVer {\n                return checkTableNotExistsFromInfoSchema(is, schemaID, tableName)\n        }\n\n        return checkTableNotExistsFromStore(t, schemaID, tableName)\n}<\/code><\/pre>\n\n\n\n<p>By removing the TiKV lookup, execution speed and efficiency significantly improved, especially in large-scale deployments. This optimization enhances DDL scalability while maintaining consistency and correctness. Future enhancements include indexing for table\/schema names and fault tolerance mechanisms for the schema cache.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">Improving Utilization of Computing Resources<\/h4>\n\n\n\n<p>TiDB\u2019s schema synchronization mechanism initially relied on <strong>timed <\/strong><strong>polling<\/strong>, where the system repeatedly checked for schema updates at fixed intervals. This approach introduced inefficiencies\u2014frequent schema changes or slow schema loading led to excessive invalid checks, slowing down the system.<\/p>\n\n\n\n<p>To resolve this, we adopted <strong>ETCD\u2019s Watch mechanism<\/strong>. Instead of periodic polling, TiDB now listens to real-time changes in ETCD. When a schema version changes, ETCD notifies TiDB immediately, allowing for on-demand synchronization. This enhancement:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Eliminates unnecessary polling, reducing system overhead.<\/li>\n\n\n\n<li>Improves response time, ensuring faster propagation of schema changes.<\/li>\n\n\n\n<li>Enhances resource efficiency, allowing TiDB to focus computing power on execution rather than repeated checks.<\/li>\n<\/ul>\n\n\n\n<h4 class=\"wp-block-heading\">Replacing the Broadcast Mechanism for DDL Completion<\/h4>\n\n\n\n<p>Optimizing TiDB&#8217;s DDL completion notification mechanism required replacing inefficient broadcast notifications with directional notifications. This ensures only the responsible thread processes a DDL completion event, preventing redundant processing, speeding up completion, and enhancing throughput for high-volume schema changes.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Refactoring the TiDB DDL Framework for Future Scalability<\/h3>\n\n\n\n<p>To ensure TiDB&#8217;s DDL framework remains adaptable and efficient, a comprehensive refactoring initiative was undertaken. The previous framework, burdened by technical debt, suffered from an aging design, poor code maintainability, insufficient testing, and slow iteration.<\/p>\n\n\n\n<p>This refactoring focused on improving code quality through modularity and loose coupling, enhancing testing coverage, and optimizing the architecture for better scalability and fault tolerance. An incremental approach, with small validated changes, continuous integration, and code reviews, minimized risk.<\/p>\n\n\n\n<p>The refactored framework delivers greater stability, higher development efficiency, and improved scalability. This, combined with previous optimizations in scheduling, concurrency, and schema validation, significantly enhances TiDB&#8217;s DDL performance, ensuring its ability to handle evolving demands and future growth.<\/p>\n\n\n\n<p>By continuously refining TiDB\u2019s DDL execution, we\u2019re laying the groundwork for the next generation of distributed schema management.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Conclusion\"><\/span>Conclusion <span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p>Refactoring the TiDB DDL framework was a complex undertaking. However, the resulting benefits have been substantial. Improved stability, efficiency, and scalability provide a solid foundation for future growth.<\/p>\n\n\n\n<p>If you have any questions about TiDB\u2019s DDL execution capabilities, please feel free to connect with us on&nbsp;<a href=\"https:\/\/twitter.com\/PingCAP\" target=\"_blank\" rel=\"noreferrer noopener\">Twitter<\/a>,&nbsp;<a href=\"https:\/\/www.linkedin.com\/company\/pingcap\/mycompany\/\" target=\"_blank\" rel=\"noreferrer noopener\">LinkedIn<\/a>, or through our&nbsp;<a href=\"https:\/\/slack.tidb.io\/invite?team=tidb-community&amp;channel=everyone&amp;ref=pingcap&amp;__hstc=86493575.58dcb926dd62ed60a20a8d0550a5a38f.1721653672633.1739998881822.1740002532616.644&amp;__hssc=86493575.19.1740002532616&amp;__hsfp=3850742519\" target=\"_blank\" rel=\"noreferrer noopener\">Slack Channel<\/a>.&nbsp;<\/p>","protected":false},"excerpt":{"rendered":"<p>Managing schema changes in traditional databases often leads to downtime, blocking, and operational complexity. TiDB has long simplified this process with its online DDL capabilities, allowing developers to evolve their databases without disrupting applications. As user bases and data volumes have surged, however, index creation was increasingly becoming a performance bottleneck. To address this, we [&hellip;]<\/p>\n","protected":false},"author":294,"featured_media":25289,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"ub_ctt_via":"","footnotes":""},"categories":[6],"tags":[147,189,375,162,111],"class_list":["post-25283","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-engineering","tag-distributed-sql","tag-online-ddl","tag-performance-optimizations","tag-saas","tag-tidb"],"acf":[],"featured_image_src":"https:\/\/static.pingcap.com\/files\/2025\/02\/19141445\/tidb_feature_1800x600-1-2.png","author_info":{"display_name":"Vincent Ju","author_link":"https:\/\/www.pingcap.com\/ko\/blog\/author\/vju\/"},"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v26.9 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>TiDB DDL Optimizations: Unleashing 50x Performance Increases<\/title>\n<meta name=\"description\" content=\"Discover how TiDB handles massive online DDL operations with high throughput while maintaining stability under heavy concurrency and load.\" \/>\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\/blog\/tidb-ddl-optimizations-unleashing-50x-performance-increases\/\" \/>\n<meta property=\"og:locale\" content=\"ko_KR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"TiDB DDL Optimizations: Unleashing 50x Performance Increases\" \/>\n<meta property=\"og:description\" content=\"Discover how TiDB handles massive online DDL operations with high throughput while maintaining stability under heavy concurrency and load.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.pingcap.com\/ko\/blog\/tidb-ddl-optimizations-unleashing-50x-performance-increases\/\" \/>\n<meta property=\"og:site_name\" content=\"TiDB\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/facebook.com\/pingcap2015\" \/>\n<meta property=\"article:published_time\" content=\"2025-02-19T22:43:02+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-02-19T22:43:04+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/static.pingcap.com\/files\/2025\/02\/19141509\/tidb_1200x627-2.png\" \/>\n\t<meta property=\"og:image:width\" content=\"2400\" \/>\n\t<meta property=\"og:image:height\" content=\"1254\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Vincent Ju\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:image\" content=\"https:\/\/static.pingcap.com\/files\/2025\/02\/19141524\/tidb_twitter_1600x900-3.png\" \/>\n<meta name=\"twitter:creator\" content=\"@PingCAP\" \/>\n<meta name=\"twitter:site\" content=\"@PingCAP\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Vincent Ju\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"7\ubd84\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.pingcap.com\/blog\/tidb-ddl-optimizations-unleashing-50x-performance-increases\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.pingcap.com\/blog\/tidb-ddl-optimizations-unleashing-50x-performance-increases\/\"},\"author\":{\"name\":\"Vincent Ju\",\"@id\":\"https:\/\/www.pingcap.com\/#\/schema\/person\/a2498b526f2bcb7b94c525eb97dbc119\"},\"headline\":\"Unleashing 50x Performance: In-Depth Analysis of TiDB DDL Framework Optimizations\",\"datePublished\":\"2025-02-19T22:43:02+00:00\",\"dateModified\":\"2025-02-19T22:43:04+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.pingcap.com\/blog\/tidb-ddl-optimizations-unleashing-50x-performance-increases\/\"},\"wordCount\":1313,\"publisher\":{\"@id\":\"https:\/\/www.pingcap.com\/#organization\"},\"image\":{\"@id\":\"https:\/\/www.pingcap.com\/blog\/tidb-ddl-optimizations-unleashing-50x-performance-increases\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/static.pingcap.com\/files\/2025\/02\/19141445\/tidb_feature_1800x600-1-2.png\",\"keywords\":[\"Distributed SQL\",\"Online DDL\",\"Performance Optimizations\",\"SaaS\",\"TiDB\"],\"articleSection\":[\"Engineering\"],\"inLanguage\":\"ko-KR\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.pingcap.com\/blog\/tidb-ddl-optimizations-unleashing-50x-performance-increases\/\",\"url\":\"https:\/\/www.pingcap.com\/blog\/tidb-ddl-optimizations-unleashing-50x-performance-increases\/\",\"name\":\"TiDB DDL Optimizations: Unleashing 50x Performance Increases\",\"isPartOf\":{\"@id\":\"https:\/\/www.pingcap.com\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.pingcap.com\/blog\/tidb-ddl-optimizations-unleashing-50x-performance-increases\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.pingcap.com\/blog\/tidb-ddl-optimizations-unleashing-50x-performance-increases\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/static.pingcap.com\/files\/2025\/02\/19141445\/tidb_feature_1800x600-1-2.png\",\"datePublished\":\"2025-02-19T22:43:02+00:00\",\"dateModified\":\"2025-02-19T22:43:04+00:00\",\"description\":\"Discover how TiDB handles massive online DDL operations with high throughput while maintaining stability under heavy concurrency and load.\",\"breadcrumb\":{\"@id\":\"https:\/\/www.pingcap.com\/blog\/tidb-ddl-optimizations-unleashing-50x-performance-increases\/#breadcrumb\"},\"inLanguage\":\"ko-KR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.pingcap.com\/blog\/tidb-ddl-optimizations-unleashing-50x-performance-increases\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"ko-KR\",\"@id\":\"https:\/\/www.pingcap.com\/blog\/tidb-ddl-optimizations-unleashing-50x-performance-increases\/#primaryimage\",\"url\":\"https:\/\/static.pingcap.com\/files\/2025\/02\/19141445\/tidb_feature_1800x600-1-2.png\",\"contentUrl\":\"https:\/\/static.pingcap.com\/files\/2025\/02\/19141445\/tidb_feature_1800x600-1-2.png\",\"width\":3600,\"height\":1200},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.pingcap.com\/blog\/tidb-ddl-optimizations-unleashing-50x-performance-increases\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.pingcap.com\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Unleashing 50x Performance: In-Depth Analysis of TiDB DDL Framework Optimizations\"}]},{\"@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\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.pingcap.com\/#\/schema\/person\/a2498b526f2bcb7b94c525eb97dbc119\",\"name\":\"Vincent Ju\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"ko-KR\",\"@id\":\"https:\/\/www.pingcap.com\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/static.pingcap.com\/files\/2022\/10\/17234942\/avatar.jpg\",\"contentUrl\":\"https:\/\/static.pingcap.com\/files\/2022\/10\/17234942\/avatar.jpg\",\"caption\":\"Vincent Ju\"},\"description\":\"Software Engineer\",\"url\":\"https:\/\/www.pingcap.com\/ko\/blog\/author\/vju\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"TiDB DDL Optimizations: Unleashing 50x Performance Increases","description":"Discover how TiDB handles massive online DDL operations with high throughput while maintaining stability under heavy concurrency and load.","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\/blog\/tidb-ddl-optimizations-unleashing-50x-performance-increases\/","og_locale":"ko_KR","og_type":"article","og_title":"TiDB DDL Optimizations: Unleashing 50x Performance Increases","og_description":"Discover how TiDB handles massive online DDL operations with high throughput while maintaining stability under heavy concurrency and load.","og_url":"https:\/\/www.pingcap.com\/ko\/blog\/tidb-ddl-optimizations-unleashing-50x-performance-increases\/","og_site_name":"TiDB","article_publisher":"https:\/\/facebook.com\/pingcap2015","article_published_time":"2025-02-19T22:43:02+00:00","article_modified_time":"2025-02-19T22:43:04+00:00","og_image":[{"width":2400,"height":1254,"url":"https:\/\/static.pingcap.com\/files\/2025\/02\/19141509\/tidb_1200x627-2.png","type":"image\/png"}],"author":"Vincent Ju","twitter_card":"summary_large_image","twitter_image":"https:\/\/static.pingcap.com\/files\/2025\/02\/19141524\/tidb_twitter_1600x900-3.png","twitter_creator":"@PingCAP","twitter_site":"@PingCAP","twitter_misc":{"Written by":"Vincent Ju","Est. reading time":"7\ubd84"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.pingcap.com\/blog\/tidb-ddl-optimizations-unleashing-50x-performance-increases\/#article","isPartOf":{"@id":"https:\/\/www.pingcap.com\/blog\/tidb-ddl-optimizations-unleashing-50x-performance-increases\/"},"author":{"name":"Vincent Ju","@id":"https:\/\/www.pingcap.com\/#\/schema\/person\/a2498b526f2bcb7b94c525eb97dbc119"},"headline":"Unleashing 50x Performance: In-Depth Analysis of TiDB DDL Framework Optimizations","datePublished":"2025-02-19T22:43:02+00:00","dateModified":"2025-02-19T22:43:04+00:00","mainEntityOfPage":{"@id":"https:\/\/www.pingcap.com\/blog\/tidb-ddl-optimizations-unleashing-50x-performance-increases\/"},"wordCount":1313,"publisher":{"@id":"https:\/\/www.pingcap.com\/#organization"},"image":{"@id":"https:\/\/www.pingcap.com\/blog\/tidb-ddl-optimizations-unleashing-50x-performance-increases\/#primaryimage"},"thumbnailUrl":"https:\/\/static.pingcap.com\/files\/2025\/02\/19141445\/tidb_feature_1800x600-1-2.png","keywords":["Distributed SQL","Online DDL","Performance Optimizations","SaaS","TiDB"],"articleSection":["Engineering"],"inLanguage":"ko-KR"},{"@type":"WebPage","@id":"https:\/\/www.pingcap.com\/blog\/tidb-ddl-optimizations-unleashing-50x-performance-increases\/","url":"https:\/\/www.pingcap.com\/blog\/tidb-ddl-optimizations-unleashing-50x-performance-increases\/","name":"TiDB DDL Optimizations: Unleashing 50x Performance Increases","isPartOf":{"@id":"https:\/\/www.pingcap.com\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.pingcap.com\/blog\/tidb-ddl-optimizations-unleashing-50x-performance-increases\/#primaryimage"},"image":{"@id":"https:\/\/www.pingcap.com\/blog\/tidb-ddl-optimizations-unleashing-50x-performance-increases\/#primaryimage"},"thumbnailUrl":"https:\/\/static.pingcap.com\/files\/2025\/02\/19141445\/tidb_feature_1800x600-1-2.png","datePublished":"2025-02-19T22:43:02+00:00","dateModified":"2025-02-19T22:43:04+00:00","description":"Discover how TiDB handles massive online DDL operations with high throughput while maintaining stability under heavy concurrency and load.","breadcrumb":{"@id":"https:\/\/www.pingcap.com\/blog\/tidb-ddl-optimizations-unleashing-50x-performance-increases\/#breadcrumb"},"inLanguage":"ko-KR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.pingcap.com\/blog\/tidb-ddl-optimizations-unleashing-50x-performance-increases\/"]}]},{"@type":"ImageObject","inLanguage":"ko-KR","@id":"https:\/\/www.pingcap.com\/blog\/tidb-ddl-optimizations-unleashing-50x-performance-increases\/#primaryimage","url":"https:\/\/static.pingcap.com\/files\/2025\/02\/19141445\/tidb_feature_1800x600-1-2.png","contentUrl":"https:\/\/static.pingcap.com\/files\/2025\/02\/19141445\/tidb_feature_1800x600-1-2.png","width":3600,"height":1200},{"@type":"BreadcrumbList","@id":"https:\/\/www.pingcap.com\/blog\/tidb-ddl-optimizations-unleashing-50x-performance-increases\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.pingcap.com\/"},{"@type":"ListItem","position":2,"name":"Unleashing 50x Performance: In-Depth Analysis of TiDB DDL Framework Optimizations"}]},{"@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"]},{"@type":"Person","@id":"https:\/\/www.pingcap.com\/#\/schema\/person\/a2498b526f2bcb7b94c525eb97dbc119","name":"Vincent Ju","image":{"@type":"ImageObject","inLanguage":"ko-KR","@id":"https:\/\/www.pingcap.com\/#\/schema\/person\/image\/","url":"https:\/\/static.pingcap.com\/files\/2022\/10\/17234942\/avatar.jpg","contentUrl":"https:\/\/static.pingcap.com\/files\/2022\/10\/17234942\/avatar.jpg","caption":"Vincent Ju"},"description":"Software Engineer","url":"https:\/\/www.pingcap.com\/ko\/blog\/author\/vju\/"}]}},"grav_blocks":false,"card_markup":"<a class=\"card-resource bg-white\" href=\"https:\/\/www.pingcap.com\/ko\/blog\/tidb-ddl-optimizations-unleashing-50x-performance-increases\/\"><div class=\"card-resource__image-container\"><img class=\"card-resource__image\" alt=\"tidb_feature_1800x600 (1)\" src=\"https:\/\/static.pingcap.com\/files\/2025\/02\/19141445\/tidb_feature_1800x600-1-2.png\" loading=\"lazy\" width=3600 height=1200 \/><\/div><div class=\"card-resource__content-container\"><div class=\"card-resource__content-head\"><div class=\"card-resource__category\">Engineering<\/div><\/div><h5 class=\"card-resource__title\">Unleashing 50x Performance: In-Depth Analysis of TiDB DDL Framework Optimizations<\/h5><\/div><\/a>","_links":{"self":[{"href":"https:\/\/www.pingcap.com\/ko\/wp-json\/wp\/v2\/posts\/25283","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.pingcap.com\/ko\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.pingcap.com\/ko\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.pingcap.com\/ko\/wp-json\/wp\/v2\/users\/294"}],"replies":[{"embeddable":true,"href":"https:\/\/www.pingcap.com\/ko\/wp-json\/wp\/v2\/comments?post=25283"}],"version-history":[{"count":14,"href":"https:\/\/www.pingcap.com\/ko\/wp-json\/wp\/v2\/posts\/25283\/revisions"}],"predecessor-version":[{"id":25312,"href":"https:\/\/www.pingcap.com\/ko\/wp-json\/wp\/v2\/posts\/25283\/revisions\/25312"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.pingcap.com\/ko\/wp-json\/wp\/v2\/media\/25289"}],"wp:attachment":[{"href":"https:\/\/www.pingcap.com\/ko\/wp-json\/wp\/v2\/media?parent=25283"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.pingcap.com\/ko\/wp-json\/wp\/v2\/categories?post=25283"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.pingcap.com\/ko\/wp-json\/wp\/v2\/tags?post=25283"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}