<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>性能优化 on Ean7的小站</title><link>https://ean7.top/tags/%E6%80%A7%E8%83%BD%E4%BC%98%E5%8C%96/</link><description>Recent content in 性能优化 on Ean7的小站</description><generator>Hugo</generator><language>zh-cn</language><lastBuildDate>Thu, 06 Aug 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://ean7.top/tags/%E6%80%A7%E8%83%BD%E4%BC%98%E5%8C%96/index.xml" rel="self" type="application/rss+xml"/><item><title>MySQL 时序数据优化</title><link>https://ean7.top/posts/%E6%95%B0%E6%8D%AE%E5%BA%93%E4%BC%98%E5%8C%96/</link><pubDate>Thu, 06 Aug 2026 00:00:00 +0000</pubDate><guid>https://ean7.top/posts/%E6%95%B0%E6%8D%AE%E5%BA%93%E4%BC%98%E5%8C%96/</guid><description>&lt;h1 id="背景"&gt;背景&lt;/h1&gt;
&lt;p&gt;项目刚开始数据库选型错了，采用了MySQL来保存时序数据，在不改动前后端源码的情况下，尽量采用“插件”的方式优化。&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;假设传感器表：&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;CREATE TABLE sensor_data (
id BIGINT AUTO_INCREMENT PRIMARY KEY,
device_id INT,
channel INT,
value DOUBLE,
peak DOUBLE,
create_time DATETIME(3)
);
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;数据：&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;设备1
每秒采集一次
每天约86400条
一年约3153万条
&lt;/code&gt;&lt;/pre&gt;&lt;hr&gt;
&lt;h1 id="一增加索引优先级最高"&gt;一、增加索引（优先级最高）&lt;/h1&gt;
&lt;h2 id="11-判断当前索引"&gt;1.1 判断当前索引&lt;/h2&gt;
&lt;p&gt;先看：&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;SHOW INDEX FROM sensor_data;
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;例如：&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;Key_name Column_name
PRIMARY id
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;只有主键，没有时间和设备索引。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="12-增加组合索引"&gt;1.2 增加组合索引&lt;/h2&gt;
&lt;p&gt;你的查询一般类似：&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;SELECT *
FROM sensor_data
WHERE device_id=100
AND create_time
BETWEEN &amp;#39;2026-08-01&amp;#39;
AND &amp;#39;2026-08-02&amp;#39;;
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;增加：&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;ALTER TABLE sensor_data
ADD INDEX idx_device_time
(
device_id,
create_time
);
&lt;/code&gt;&lt;/pre&gt;&lt;hr&gt;
&lt;h2 id="13-为什么顺序是-devicetime"&gt;1.3 为什么顺序是 device,time？&lt;/h2&gt;
&lt;p&gt;错误：&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;(create_time,device_id)
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;因为：&lt;/p&gt;
&lt;p&gt;查询：&lt;/p&gt;</description></item></channel></rss>