Site updated: 2024-05-11 11:41:12
This commit is contained in:
1 parent
b5f3f9e901
commit
58e8e89d23
219 files changed
+342
-330
No files matched your search
@@ -8,7 +8,7 @@
|
||||
<author>
|
||||
<name>Hito Li</name>
|
||||
</author>
|
||||
<updated>2024-04-30T03:44:00.000Z</updated>
|
||||
<updated>2024-05-10T09:09:00.000Z</updated>
|
||||
<category term="hito" />
|
||||
<category term="無言" />
|
||||
<category term="博客" />
|
||||
@@ -17,6 +17,58 @@
|
||||
<category term="心得体会" />
|
||||
<category term="技术分享" />
|
||||
<category term="踩坑" />
|
||||
<entry>
|
||||
<id>https://hitoli.com/2024/05/10/MySQL%E8%A1%A8%E5%88%86%E5%8C%BA/</id>
|
||||
<title>MySQL表分区</title>
|
||||
<link rel="alternate" href="https://hitoli.com/2024/05/10/MySQL%E8%A1%A8%E5%88%86%E5%8C%BA/"/>
|
||||
<content type="html"><h4 id="简介"><a class="anchor" href="#简介">#</a> 简介</h4>
|
||||
<blockquote>
|
||||
<p>当单表数据量过大时,就需要考虑对表进行分表或者分区了。分表和分区都是用来解决数据库中大量数据存储和查询效率的问题,但它们的实现方式和解决的问题有所不同。</p>
|
||||
</blockquote>
|
||||
<blockquote>
|
||||
<p>分表(Sharding):</p>
|
||||
</blockquote>
|
||||
<ul>
|
||||
<li>分表是将一个大表按照某种规则拆分成多个较小的表,每个小表称为一个分表,这些分表可以分布在不同的数据库实例中。</li>
|
||||
<li>分表通常基于某种规则进行拆分,例如按照用户 ID、地理位置等进行拆分。</li>
|
||||
<li>分表的主要目的是解决单个表过大的问题,提高查询效率和并发能力。</li>
|
||||
</ul>
|
||||
<blockquote>
|
||||
<p>分区(Partitioning):</p>
|
||||
</blockquote>
|
||||
<ul>
|
||||
<li>分区是将一个表按照某种规则拆分成多个逻辑上的部分,每个部分称为一个分区,但这些分区仍然属于同一个表。</li>
|
||||
<li>分区通常基于某种规则进行拆分,例如按照时间、范围、哈希值等进行拆分。</li>
|
||||
<li>分区的主要目的是提高数据的管理和查询效率,通过将数据分散到不同的分区中,可以提高查询性能和管理灵活性。</li>
|
||||
</ul>
|
||||
<blockquote>
|
||||
<p>区别:</p>
|
||||
</blockquote>
|
||||
<ul>
|
||||
<li>实现方式:分表是将一个表拆分成多个子表,每个子表都是一个独立的表;而分区是将一个表按照某种规则拆分成多个逻辑上的部分,这些部分仍然属于同一个表。</li>
|
||||
<li>解决的问题:分表主要解决单个表过大的问题,提高查询效率和并发能力;而分区主要提高数据的管理和查询效率,通过将数据分散到不同的分区中,可以提高查询性能和管理灵活性。</li>
|
||||
<li>适用场景:分表适用于单表数据量巨大的情况,例如大型电商平台的订单表;而分区适用于需要根据某种规则对数据进行划分管理的情况,例如按照时间对日志表进行分区。</li>
|
||||
</ul>
|
||||
<blockquote>
|
||||
<p>本文章介绍的是如何对单表进行分区。</p>
|
||||
</blockquote>
|
||||
<h6 id="给表添加分区"><a class="anchor" href="#给表添加分区">#</a> 给表添加分区</h6>
|
||||
<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"> <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>
|
||||
<h6 id="按指定表名创建当前年月的分区"><a class="anchor" href="#按指定表名创建当前年月的分区">#</a> 按指定表名创建当前年月的分区</h6>
|
||||
<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"><span class="keyword">CREATE</span> <span class="keyword">PROCEDURE</span> create_monthly_partition(<span class="keyword">IN</span> tableName <span class="type">VARCHAR</span>(<span class="number">255</span>))</span><br><span class="line"><span class="keyword">BEGIN</span></span><br><span class="line"> <span class="keyword">DECLARE</span> currentYear <span class="type">INT</span>;</span><br><span class="line"> <span class="keyword">DECLARE</span> currentMonth <span class="type">INT</span>;</span><br><span class="line"> <span class="keyword">DECLARE</span> nextYear <span class="type">INT</span>;</span><br><span class="line"> <span class="keyword">DECLARE</span> nextMonth <span class="type">INT</span>;</span><br><span class="line"> <span class="keyword">DECLARE</span> partitionName <span class="type">VARCHAR</span>(<span class="number">255</span>);</span><br><span class="line"> <span class="keyword">SET</span> currentYear <span class="operator">=</span> <span class="keyword">YEAR</span>(<span class="built_in">CURRENT_DATE</span>);</span><br><span class="line"> <span class="keyword">SET</span> currentMonth <span class="operator">=</span> <span class="keyword">MONTH</span>(<span class="built_in">CURRENT_DATE</span>);</span><br><span class="line"> <span class="comment">-- 计算下一个月的年份和月份</span></span><br><span class="line"> IF currentMonth <span class="operator">=</span> <span class="number">12</span> <span class="keyword">THEN</span></span><br><span class="line"> <span class="keyword">SET</span> nextYear <span class="operator">=</span> currentYear <span class="operator">+</span> <span class="number">1</span>;</span><br><span class="line"> <span class="keyword">SET</span> nextMonth <span class="operator">=</span> <span class="number">1</span>;</span><br><span class="line"> <span class="keyword">ELSE</span></span><br><span class="line"> <span class="keyword">SET</span> nextYear <span class="operator">=</span> currentYear;</span><br><span class="line"> <span class="keyword">SET</span> nextMonth <span class="operator">=</span&Line truncated
|
||||
<h6 id="调用创建新分区"><a class="anchor" href="#调用创建新分区">#</a> 调用创建新分区</h6>
|
||||
<p><figure class="highlight sql"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">CALL</span> create_monthly_partition(<span class="string">&#x27;表名&#x27;</span>);</span><br></pre></td></tr></table></figure></p>
|
||||
<h6 id="删除指定分区"><a class="anchor" href="#删除指定分区">#</a> 删除指定分区</h6>
|
||||
<p><figure class="highlight sql"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">ALTER</span> <span class="keyword">TABLE</span> dmpdb.stll_monitdata <span class="keyword">drop</span> <span class="keyword">PARTITION</span> 分区名;</span><br></pre></td></tr></table></figure></p>
|
||||
<h6 id="每月执行一次调用指定表添加新分区"><a class="anchor" href="#每月执行一次调用指定表添加新分区">#</a> 每月执行一次调用指定表添加新分区</h6>
|
||||
<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></pre></td><td class="code"><pre><span class="line"><span class="keyword">CREATE</span> EVENT create_monthly_partition_event</span><br><span class="line"><span class="keyword">ON</span> SCHEDULE <span class="keyword">EVERY</span> <span class="number">1</span> <span class="keyword">MONTH</span> </span><br><span class="line">STARTS <span class="string">&#x27;2024-01-01 00:00:00&#x27;</span></span><br><span class="line">DO</span><br><span class="line"><span class="keyword">BEGIN</span></span><br><span class="line"> <span class="comment">-- 定义需要分区的表名列表</span></span><br><span class="line"> <span class="keyword">SET</span> <span class="variable">@tables</span> <span class="operator">=</span> <span class="string">&#x27;表名1,表名2&#x27;</span>;</span><br><span class="line"> <span class="comment">-- 遍历表名列表并为每个表创建分区</span></span><br><span class="line"> WHILE <span class="keyword">CHAR_LENGTH</span>(<span class="variable">@tables</span>) <span class="operator">&gt;</span> <span class="number">0</span> DO</span><br><span class="line"> <span class="keyword">SET</span> <span class="variable">@tableName</span> <span class="operator">=</span> SUBSTRING_INDEX(<span class="variable">@tables</span>, <span class="string">&#x27;,&#x27;</span>, <span class="number">1</span>);</span><br><span class="line"> <span class="keyword">SET</span> <span class="variable">@tables</span> <span class="operator">=</span> <span class="built_in">SUBSTRING</span>(<span class="variable">@tables</span>, <span class="keyword">CHAR_LENGTH</span>(<span class="variable">@tableName</span>) <span class="operator">+</span> <span class="number">2</span>);</span><br><span class="line"> <span class="keyword">CALL</span> create_monthly_partition(<span class="variable">@tableName</span>);</span><br><span class="line"> <span class="keyword">END</span> WHILE;</span><br><span class="line"><span class="keyword">END</span></span><br></pre></td></tr></table></figure></p>
|
||||
</content>
|
||||
<category term="工作" scheme="https://hitoli.com/categories/%E5%B7%A5%E4%BD%9C/" />
|
||||
<category term="解决问题" scheme="https://hitoli.com/categories/%E5%B7%A5%E4%BD%9C/%E8%A7%A3%E5%86%B3%E9%97%AE%E9%A2%98/" />
|
||||
<category term="mysql" scheme="https://hitoli.com/tags/mysql/" />
|
||||
<category term="表分区" scheme="https://hitoli.com/tags/%E8%A1%A8%E5%88%86%E5%8C%BA/" />
|
||||
<updated>2024-05-10T09:09:00.000Z</updated>
|
||||
</entry>
|
||||
<entry>
|
||||
<id>https://hitoli.com/2024/04/30/Java%E5%90%8E%E7%AB%AF%E7%A6%81%E6%AD%A2%E6%8E%A5%E5%8F%A3%E7%9E%AC%E6%97%B6%E9%87%8D%E5%A4%8D%E8%B0%83%E7%94%A8/</id>
|
||||
<title>Java后端禁止接口瞬时重复调用</title>
|
||||
@@ -253,9 +305,9 @@
|
||||
<category term="Windows" scheme="https://hitoli.com/categories/Windows/" />
|
||||
<category term="工具" scheme="https://hitoli.com/categories/Windows/%E5%B7%A5%E5%85%B7/" />
|
||||
<category term="SpringBoot" scheme="https://hitoli.com/tags/SpringBoot/" />
|
||||
<category term="快速部署" scheme="https://hitoli.com/tags/%E5%BF%AB%E9%80%9F%E9%83%A8%E7%BD%B2/" />
|
||||
<category term="Bat" scheme="https://hitoli.com/tags/Bat/" />
|
||||
<category term="批处理" scheme="https://hitoli.com/tags/%E6%89%B9%E5%A4%84%E7%90%86/" />
|
||||
<category term="快速部署" scheme="https://hitoli.com/tags/%E5%BF%AB%E9%80%9F%E9%83%A8%E7%BD%B2/" />
|
||||
<updated>2023-10-28T11:56:00.000Z</updated>
|
||||
</entry>
|
||||
<entry>
|
||||
@@ -597,52 +649,4 @@ Lombok supports: OpenJDK javac, ECJ</p>
|
||||
<category term="命令" scheme="https://hitoli.com/tags/%E5%91%BD%E4%BB%A4/" />
|
||||
<updated>2023-04-16T05:32:00.000Z</updated>
|
||||
</entry>
|
||||
<entry>
|
||||
<id>https://hitoli.com/2023/04/16/K8S%E9%A1%B9%E7%9B%AE%E6%9C%AC%E5%9C%B0%E9%83%A8%E7%BD%B2%E6%AD%A5%E9%AA%A4/</id>
|
||||
<title>K8S项目本地部署步骤</title>
|
||||
<link rel="alternate" href="https://hitoli.com/2023/04/16/K8S%E9%A1%B9%E7%9B%AE%E6%9C%AC%E5%9C%B0%E9%83%A8%E7%BD%B2%E6%AD%A5%E9%AA%A4/"/>
|
||||
<content type="html"><h4 id="本地部署步骤"><a class="anchor" href="#本地部署步骤">#</a> 本地部署步骤</h4>
|
||||
<ol>
|
||||
<li>本机安装 wsl_update_x64.msi (已安装可忽略)</li>
|
||||
<li>本机安装 Docker Desktop Installer.exe (已安装可忽略)</li>
|
||||
<li>安装成功后,打开设置<br />
|
||||
<img data-src="https://nas.hitoli.com:18014/images/2023/04/16/ab557bae79bf.png" alt="" /></li>
|
||||
<li>选择 Docker Engine,粘贴进如下配置后重启<br />
|
||||
<figure class="highlight json"><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></pre></td><td class="code"><pre><span class="line"><span class="punctuation">&#123;</span></span><br><span class="line"> <span class="attr">&quot;builder&quot;</span><span class="punctuation">:</span> <span class="punctuation">&#123;</span></span><br><span class="line"> <span class="attr">&quot;gc&quot;</span><span class="punctuation">:</span> <span class="punctuation">&#123;</span></span><br><span class="line"> <span class="attr">&quot;defaultKeepStorage&quot;</span><span class="punctuation">:</span> <span class="string">&quot;20GB&quot;</span><span class="punctuation">,</span></span><br><span class="line"> <span class="attr">&quot;enabled&quot;</span><span class="punctuation">:</span> <span class="literal"><span class="keyword">true</span></span></span><br><span class="line"> <span class="punctuation">&#125;</span></span><br><span class="line"> <span class="punctuation">&#125;</span><span class="punctuation">,</span></span><br><span class="line"> <span class="attr">&quot;experimental&quot;</span><span class="punctuation">:</span> <span class="literal"><span class="keyword">false</span></span><span class="punctuation">,</span></span><br><span class="line"> <span class="attr">&quot;features&quot;</span><span class="punctuation">:</span> <span class="punctuation">&#123;</span></span><br><span class="line"> <span class="attr">&quot;buildkit&quot;</span><span class="punctuation">:</span> <span class="literal"><span class="keyword">true</span></span></span><br><span class="line"> <span class="punctuation">&#125;</span><span class="punctuation">,</span></span><br><span class="line"> <span class="attr">&quot;insecure-registries&quot;</span><span class="punctuation">:</span> <span class="punctuation">[</span></span><br><span class="line"> <span class="string">&quot;http://192.168.86.117&quot;</span></span><br><span class="line"> <span class="punctuation">]</span></span><br><span class="line"><span class="punctuation">&#125;</span></span><br></pre></td></tr></table></figure><br />
|
||||
<img data-src="https://nas.hitoli.com:18014/images/2023/04/16/93533dd8e043.png" alt="" /></li>
|
||||
<li>本项目 clean、compile、package<br />
|
||||
<img data-src="https://nas.hitoli.com:18014/images/2023/04/16/c14b2405a234.jpg" alt="" /></li>
|
||||
<li>添加一个 DockerFile 的启动配置<br />
|
||||
192.168.86.117/zhsl/ys-zhslsgcgl:0.0.1<br />
|
||||
<img data-src="https://nas.hitoli.com:18014/images/2023/04/16/66f152c95d6e.png" alt="" /></li>
|
||||
<li>保证代码是最新的之后,运行上步的配置,会把刚才 install 生成的 jar 包上传到本机 Docker 生成一个本机 docker 镜像<br />
|
||||
<img data-src="https://nas.hitoli.com:18014/images/2023/04/16/4b915691271f.png" alt="" /></li>
|
||||
<li>命令行登录本地的 KUBESPHERE,把本机 docker 镜像上传到 KUBESPHERE<br />
|
||||
<figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">docker login 192.168.86.117</span><br></pre></td></tr></table></figure><br />
|
||||
<img data-src="https://nas.hitoli.com:18014/images/2023/04/16/d1acb4e8e336.png" alt="" /><br />
|
||||
<figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">docker images命令也可以看到本机docker镜像</span><br></pre></td></tr></table></figure><br />
|
||||
<img data-src="https://nas.hitoli.com:18014/images/2023/04/16/2b22d19f4649.png" alt="" /><br />
|
||||
<figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">把本机docker镜像上传到KUBESPHERE</span><br><span class="line">docker push 192.168.86.117/zhsl/ys-zhslsgcgl:0.0.1</span><br></pre></td></tr></table></figure><br />
|
||||
<img data-src="https://nas.hitoli.com:18014/images/2023/04/16/f1d792024e54.png" alt="" /></li>
|
||||
<li>网页登录本地的 KUBESPHERE。<br />
|
||||
<span class="exturl" data-url="aHR0cDovLzE5Mi4xNjguODYuMTE3OjMwODgwLyVFRiVCQyU4QyVFOCVCRiU5QiVFNSU4NSVBNSVFMiU4MCU5QyVFNSVCNyVBNSVFNCVCRCU5QyVFOCVCNCU5RiVFOCVCRCVCRCVFMiU4MCU5RCVFNiU4OSVCRSVFNSU4OCVCMCVFNSU4OCU5QSVFNCVCOCU4QSVFNCVCQyVBMERvY2tlciVFNiU5QyU4RCVFNSU4QSVBMSVFOSU5NSU5QyVFNSU4MyU4RiVFRiVCQyU4QyVFNSVCOSVCNiVFNSU5MCVBRiVFNSU4QSVBOCVFMyU4MCU4Mg==">http://192.168.86.117:30880/,进入 “工作负载” 找到刚上传 Docker 服务镜像,并启动。</span><br />
|
||||
<img data-src="https://nas.hitoli.com:18014/images/2023/04/16/fcd7e6459555.png" alt="" /></li>
|
||||
</ol>
|
||||
<h4 id="通过导出镜像部署"><a class="anchor" href="#通过导出镜像部署">#</a> 通过导出镜像部署</h4>
|
||||
<ol>
|
||||
<li>docker images 查看要导出的镜像 id<br />
|
||||
<img data-src="https://nas.hitoli.com:18014/images/2023/04/16/1edd4bacf81c.png" alt="" /></li>
|
||||
<li>docker save 58310865054f &gt; szy.tar 导出到用户目录下 C:\Users\hito</li>
|
||||
<li>docker load -i szy.tar 载入镜像<br />
|
||||
<img data-src="https://nas.hitoli.com:18014/images/2023/04/16/32154204eff2.png" alt="" /></li>
|
||||
<li>docker tag 58310865054f harbor.zhsl.local:30881/zhsl/ys-zhslszy:0.0.1 标记镜像</li>
|
||||
<li>docker push harbor.zhsl.local:30881/zhsl/ys-zhslszy:0.0.1 上传镜像</li>
|
||||
</ol>
|
||||
</content>
|
||||
<category term="工作" scheme="https://hitoli.com/categories/%E5%B7%A5%E4%BD%9C/" />
|
||||
<category term="项目部署" scheme="https://hitoli.com/categories/%E5%B7%A5%E4%BD%9C/%E9%A1%B9%E7%9B%AE%E9%83%A8%E7%BD%B2/" />
|
||||
<category term="项目部署" scheme="https://hitoli.com/tags/%E9%A1%B9%E7%9B%AE%E9%83%A8%E7%BD%B2/" />
|
||||
<category term="K8S" scheme="https://hitoli.com/tags/K8S/" />
|
||||
<updated>2023-04-16T04:39:00.000Z</updated>
|
||||
</entry>
|
||||
</feed>
|
||||
Reference in new issue
Block a user