Site updated: 2024-08-08 14:51:39

This commit is contained in:
qinglong committed 2024-08-08 14:51:43 +08:00
1 parent 6166b891bf
commit 46f1245a76
225 files changed
+231 -231

No files matched your search

+1 -1
View File
@@ -37,7 +37,7 @@
"url": "https://hitoli.com/2024/05/10/MySQL%E8%A1%A8%E5%88%86%E5%8C%BA/",
"title": "MySQL表分区",
"date_published": "2024-05-10T09:09:00.000Z",
"content_html": "<h4 id=\"简介\"><a class=\"anchor\" href=\"#简介\">#</a> 简介</h4>\n<blockquote>\n<p>当单表数据量过大时,就需要考虑对表进行分表或者分区了。分表和分区都是用来解决数据库中大量数据存储和查询效率的问题,但它们的实现方式和解决的问题有所不同。</p>\n</blockquote>\n<blockquote>\n<p>分表(Sharding):</p>\n</blockquote>\n<ul>\n<li>分表是将一个大表按照某种规则拆分成多个较小的表,每个小表称为一个分表,这些分表可以分布在不同的数据库实例中。</li>\n<li>分表通常基于某种规则进行拆分,例如按照用户 ID、地理位置等进行拆分。</li>\n<li>分表的主要目的是解决单个表过大的问题,提高查询效率和并发能力。</li>\n</ul>\n<blockquote>\n<p>分区(Partitioning):</p>\n</blockquote>\n<ul>\n<li>分区是将一个表按照某种规则拆分成多个逻辑上的部分,每个部分称为一个分区,但这些分区仍然属于同一个表。</li>\n<li>分区通常基于某种规则进行拆分,例如按照时间、范围、哈希值等进行拆分。</li>\n<li>分区的主要目的是提高数据的管理和查询效率,通过将数据分散到不同的分区中,可以提高查询性能和管理灵活性。</li>\n</ul>\n<blockquote>\n<p>区别:</p>\n</blockquote>\n<ul>\n<li>实现方式:分表是将一个表拆分成多个子表,每个子表都是一个独立的表;而分区是将一个表按照某种规则拆分成多个逻辑上的部分,这些部分仍然属于同一个表。</li>\n<li>解决的问题:分表主要解决单个表过大的问题,提高查询效率和并发能力;而分区主要提高数据的管理和查询效率,通过将数据分散到不同的分区中,可以提高查询性能和管理灵活性。</li>\n<li>适用场景:分表适用于单表数据量巨大的情况,例如大型电商平台的订单表;而分区适用于需要根据某种规则对数据进行划分管理的情况,例如按照时间对日志表进行分区。</li>\n</ul>\n<blockquote>\n<p>本文章介绍的是如何对单表进行分区。</p>\n</blockquote>\n<h6 id=\"给表添加分区\"><a class=\"anchor\" href=\"#给表添加分区\">#</a> 给表添加分区</h6>\n<p><figure class=\"highlight sql\"><table><tr><td class=\"gutter\"><pre><span class=\"line\">1</span><br><span class=\"line\">2</span><br><span class=\"line\">3</span><br><span class=\"line\">4</span><br><span class=\"line\">5</span><br><span class=\"line\">6</span><br><span class=\"line\">7</span><br><span class=\"line\">8</span><br></pre></td><td class=\"code\"><pre><span class=\"line\"><span class=\"keyword\">ALTER</span> <span class=\"keyword\">TABLE</span> 表名</span><br><span class=\"line\"><span class=\"keyword\">PARTITION</span> <span class=\"keyword\">BY</span> <span class=\"keyword\">RANGE</span> COLUMNS (时间字段名) (</span><br><span class=\"line\">\t<span class=\"comment\">-- 分区条件(时间小于2022-02-01的数据放入p202201分区中)</span></span><br><span class=\"line\"> <span class=\"keyword\">PARTITION</span> p202201 <span class=\"keyword\">VALUES</span> LESS THAN (<span class=\"string\">&#x27;2022-02-01&#x27;</span>),</span><br><span class=\"line\"> <span class=\"keyword\">PARTITION</span> p202202 <span class=\"keyword\">VALUES</span> LESS THAN (<span class=\"string\">&#x27;2022-03-01&#x27;</span>),</span><br><span class=\"line\"> <span class=\"keyword\">PARTITION</span> p202203 <span class=\"keyword\">VALUES</span> LESS THAN (<span class=\"string\">&#x27;2022-04-01&#x27;</span>),</span><br><span class=\"line\"> <span class=\"comment\">-- 继续定义更多的分区...</span></span><br><span class=\"line\">);</span><br></pre></td></tr></table></figure></p>\n<h6 id=\"按指定表名创建当前年月的分区\"><a class=\"anchor\" href=\"#按指定表名创建当前年月的分区\">#</a> 按指定表名创建当前年月的分区</h6>\n<p><figure class=\"highlight sql\"><table><tr><td class=\"gutter\"><pre><span class=\"line\">1</span><br><span class=\"line\">2</span><br><span class=\"line\">3</span><br><span class=\"line\">4</span><br><span class=\"line\">5</span><br><span class=\"line\">6</span><br><span class=\"line\">7</span><br><span class=\"line\">8</span><br><span class=\"line\">9</span><br><span class=\"line\">10</span><br><span class=\"line\">11</span><br><span class=\"line\">12</span><br><span class=\"line\">13</span><br><span class=\"line\">14</span><br><span class=\"line\">15</span><br><span class=\"line\">16</span><br><span class=\"line\">17</span><br><span class=\"line\">18</span><br><span class=\"line\">19</span><br><span class=\"line\">20</span><br><span class=\"line\">21</span><br><span class=\"line\">22</span><br><span class=\"line\">23</span><br><span class=\"line\">24</span><br><span class=\"line\">25</span><br></pre></td><td class=\"code\"><pre><span class=\"Line truncated
"content_html": "<h4 id=\"简介\"><a class=\"anchor\" href=\"#简介\">#</a> 简介</h4>\n<blockquote>\n<p>当单表数据量过大时,就需要考虑对表进行分表或者分区了。分表和分区都是用来解决数据库中大量数据存储和查询效率的问题,但它们的实现方式和解决的问题有所不同。</p>\n</blockquote>\n<blockquote>\n<p>分表(Sharding):</p>\n</blockquote>\n<ul>\n<li>分表是将一个大表按照某种规则拆分成多个较小的表,每个小表称为一个分表,这些分表可以分布在不同的数据库实例中。</li>\n<li>分表通常基于某种规则进行拆分,例如按照用户 ID、地理位置等进行拆分。</li>\n<li>分表的主要目的是解决单个表过大的问题,提高查询效率和并发能力。</li>\n</ul>\n<blockquote>\n<p>分区(Partitioning):</p>\n</blockquote>\n<ul>\n<li>分区是将一个表按照某种规则拆分成多个逻辑上的部分,每个部分称为一个分区,但这些分区仍然属于同一个表。</li>\n<li>分区通常基于某种规则进行拆分,例如按照时间、范围、哈希值等进行拆分。</li>\n<li>分区的主要目的是提高数据的管理和查询效率,通过将数据分散到不同的分区中,可以提高查询性能和管理灵活性。</li>\n</ul>\n<blockquote>\n<p>区别:</p>\n</blockquote>\n<ul>\n<li>实现方式:分表是将一个表拆分成多个子表,每个子表都是一个独立的表;而分区是将一个表按照某种规则拆分成多个逻辑上的部分,这些部分仍然属于同一个表。</li>\n<li>解决的问题:分表主要解决单个表过大的问题,提高查询效率和并发能力;而分区主要提高数据的管理和查询效率,通过将数据分散到不同的分区中,可以提高查询性能和管理灵活性。</li>\n<li>适用场景:分表适用于单表数据量巨大的情况,例如大型电商平台的订单表;而分区适用于需要根据某种规则对数据进行划分管理的情况,例如按照时间对日志表进行分区。</li>\n</ul>\n<blockquote>\n<p>本文章介绍的是如何对单表进行分区。</p>\n</blockquote>\n<h6 id=\"给表添加分区\"><a class=\"anchor\" href=\"#给表添加分区\">#</a> 给表添加分区</h6>\n<p><figure class=\"highlight sql\"><table><tr><td class=\"gutter\"><pre><span class=\"line\">1</span><br><span class=\"line\">2</span><br><span class=\"line\">3</span><br><span class=\"line\">4</span><br><span class=\"line\">5</span><br><span class=\"line\">6</span><br><span class=\"line\">7</span><br><span class=\"line\">8</span><br></pre></td><td class=\"code\"><pre><span class=\"line\"><span class=\"keyword\">ALTER</span> <span class=\"keyword\">TABLE</span> 表名(字段)</span><br><span class=\"line\"><span class=\"keyword\">PARTITION</span> <span class=\"keyword\">BY</span> <span class=\"keyword\">RANGE</span> COLUMNS (时间字段名) (</span><br><span class=\"line\">\t<span class=\"comment\">-- 分区条件(时间小于2022-02-01的数据放入p202201分区中)</span></span><br><span class=\"line\"> <span class=\"keyword\">PARTITION</span> p202201 <span class=\"keyword\">VALUES</span> LESS THAN (<span class=\"string\">&#x27;2022-02-01&#x27;</span>),</span><br><span class=\"line\"> <span class=\"keyword\">PARTITION</span> p202202 <span class=\"keyword\">VALUES</span> LESS THAN (<span class=\"string\">&#x27;2022-03-01&#x27;</span>),</span><br><span class=\"line\"> <span class=\"keyword\">PARTITION</span> p202203 <span class=\"keyword\">VALUES</span> LESS THAN (<span class=\"string\">&#x27;2022-04-01&#x27;</span>),</span><br><span class=\"line\"> <span class=\"comment\">-- 继续定义更多的分区...</span></span><br><span class=\"line\">);</span><br></pre></td></tr></table></figure></p>\n<h6 id=\"按指定表名创建当前年月的分区\"><a class=\"anchor\" href=\"#按指定表名创建当前年月的分区\">#</a> 按指定表名创建当前年月的分区</h6>\n<p><figure class=\"highlight sql\"><table><tr><td class=\"gutter\"><pre><span class=\"line\">1</span><br><span class=\"line\">2</span><br><span class=\"line\">3</span><br><span class=\"line\">4</span><br><span class=\"line\">5</span><br><span class=\"line\">6</span><br><span class=\"line\">7</span><br><span class=\"line\">8</span><br><span class=\"line\">9</span><br><span class=\"line\">10</span><br><span class=\"line\">11</span><br><span class=\"line\">12</span><br><span class=\"line\">13</span><br><span class=\"line\">14</span><br><span class=\"line\">15</span><br><span class=\"line\">16</span><br><span class=\"line\">17</span><br><span class=\"line\">18</span><br><span class=\"line\">19</span><br><span class=\"line\">20</span><br><span class=\"line\">21</span><br><span class=\"line\">22</span><br><span class=\"line\">23</span><br><span class=\"line\">24</span><br><span class=\"line\">25</span><br></pre></td><td class=\"code\"><pre><sLine truncated
"tags": [
"工作",
"解决问题",