clickhouse 学习总结

在 ClickHouse 中,配置文件通常位于 /etc/clickhouse 目录下。这个目录包含了多个配置文件,用于控制 ClickHouse 的各种服务(如服务器、用户、远程服务等)的配置。

数据存储目录/var/lib/clickhouse

配置 文件目录 /etc/clickhouse-server

日志配置目录 /var/log/clickhouse-server

主要配置文件

  1. 用户配置文件 (users.xml):这个文件用于定义用户和他们的权限。

  2. 配置文件 (config.xml):包含服务器的主要配置设置,例如监听地址、日志级别等。

  3. 远程服务器配置文件 (remote_servers.xml):用于定义远程服务器的配置,这对于分布式查询非常有用。

  4. ZooKeeper 配置文件 (zookeeper.xml):如果 ClickHouse 配置为使用 ZooKeeper 进行协调,则此文件包含 ZooKeeper 的相关配置。

  5. 用户配置文件 (users.xml):包含用户和访问权限的配置 

日志配置目录

clickhouse 历史发展

20.5.3 开始支持多线程

20.6.3 支持explain

mysql 20.8 实时同步mysql

📌 ‌一、早期版本阶段(1.1.x系列)

  • 版本范围‌:1.1.54245(2017-07)→ 1.1.54394(2018-07)12
  • 核心特性‌:
    • 首次开源发布,奠定‌列式存储引擎‌基础架构3;
    • 支持基础‌MergeTree引擎‌,实现分区和排序能力;
    • 提供简单SQL查询接口,初步支持聚合函数。

🔄 ‌二、版本命名变革阶段(18.x → 19.x)

  • 版本范围‌:18.1.0(2018-07)→ 19.17.6.36(2019-12)12
  • 重大变革‌:
    • 版本号重构‌:采用 Year.Major.Minor.patch 格式(例:18.1.0表示2018年首个稳定版)2;
    • 分布式架构增强‌:
      • 引入ReplicatedMergeTree引擎,通过ZooKeeper实现数据复制38;
      • 支持Distributed引擎,原生跨节点查询分发3;
    • 存储引擎扩展‌:新增KafkaMySQL等外部表引擎,支持流式数据接入3。

🚀 ‌三、现代LTS版本阶段(20.x及以后)

1. 版本20.x(2020年起)
  • 核心特性‌:
    • 窗口函数支持‌:实现ROW_NUMBER()RANK()等分析函数,增强OLAP能力4;
    • 资源隔离‌:引入资源队列(Resource Queues),限制查询并发资源8。
2. 版本22.8 LTS(2022年)
  • 里程碑特性‌:
    • 轻量级DELETE/UPDATE‌:
      • 支持异步删除(DELETE WHERE)和更新(ALTER TABLE UPDATE),突破传统批量写入限制5;
    • 日期类型扩展‌:
      • Date32DateTime64支持1900-2299年范围(原仅1925-2283年)5;
      • 时间精度提升至微秒级(最高8位)5。
3. 版本23.x → 24.x
  • 关键优化‌:
    • 查询优化器升级‌:增强JOIN重排序和子查询解关联能力7;
    • 并行哈希连接(Parallel Hash Join)‌:大幅提升多表关联性能7。
4. 版本25.2(2025年)
  • 突破性改进‌:
    • 并行哈希连接性能强化‌:优化构建(Build)阶段线程争用,降低阻塞7;
    • Parquet布隆过滤器支持‌:提升过滤查询效率7;
    • 数据库备份引擎‌:原生支持分布式备份(Backup引擎)7。

🛠️ 一、表引擎分类

1. ‌MergeTree 系列(核心生产引擎)
  • MergeTree‌:支持主键索引、数据分区(PARTITION BY)、数据排序(ORDER BY),适合大规模数据分析15。
  • ReplacingMergeTree‌:自动去重相同排序键的数据(保留最新版本)16。
  • SummingMergeTree‌:预聚合数值列,加速 SUM 类查询16。
  • Distributed‌:实现跨服务器分片与副本管理,支持分布式查询19。
2. ‌日志引擎(轻量级场景)
  • TinyLog‌:
    • 每列独立存储为压缩文件,追加写入
    • 不支持索引、并发读写和原子操作,适用小表(≤100万行)311。
  • Log‌:
    • 与 TinyLog 类似,但添加了 .mark 文件支持并行读
    • 仍不支持索引和高效更新11。
3. ‌集成引擎(外部数据源)
  • Hive‌:直接查询 HDFS 上的 Hive 表,支持文本/ORC/Parquet 格式4。
  • Memory‌:数据全内存存储,重启丢失,适合临时数据处理10。
4. ‌其他引擎
  • Null‌:写入数据自动丢弃,常用于测试9。
  • Buffer‌:内存缓冲后异步写入目标表9。

⚠️ ‌引擎选择建议‌:

  • OLAP 场景优先使用 ‌MergeTree 系列‌69
  • 避免对大数据集使用 Memory 引擎(内存限制易崩溃)10

🔢 二、数据类型体系

1. ‌基础类型
类别类型示例说明
数值类型Int8/16/32/64带符号整数(如 Int32 范围:-2147483648 ~ 2147483647)112
UInt8/16/32/64无符号整数(如 UInt16 范围:0 ~ 65535)812
Float32/64浮点数(避免精确计算,可能丢失精度)112
Decimal(P, S)高精度小数(P 总位数,S 小数位)18
时间类型Date日期(YYYY-MM-DD)18
DateTime时间戳(精确到秒)1
DateTime64高精度时间戳(可至亚秒级)18
字符串类型String任意长度文本(替代 VARCHAR/BLOB)812
FixedString(N)定长字符串(N 为字节数,查询性能更优)8
LowCardinality(String)低基数枚举优化,减少存储提升查询速度7
2. ‌复合类型
  • 数组‌:Array(T)(如 Array(Int32)),元素类型需一致8
  • Nullable‌:允许字段为 NULL(但影响性能,慎用)28
  • UUID‌:128 位唯一标识符,通过 generateUUIDv4() 生成8

💡 ‌最佳实践‌:

  • 优先选择明确类型(如用 Int32 而非 Nullable(Int32))2
  • 时间字段使用 DateTime 或 DateTime64 而非字符串存储1
  • 低基数字符串列转换为 LowCardinality(String) 优化性能7

📊 功能对比摘要

特性MergeTree 系列日志引擎(TinyLog/Log)Memory 引擎
索引支持✅ 主键索引
并发读写❌(写入阻塞查询)3⚠️ 受限10
数据持久化✅ 磁盘存储✅ 磁盘存储❌ 重启丢失
适用场景大数据分析、高频查询一次性写入小表11临时计算中间结果10

 一、时间日期函数‌

  • SELECT dateDiff('day', '2025-06-01', '2025-06-06')

  • SELECT (toUnixTimestamp('2025-06-06') - toUnixTimestamp('2025-06-01')) / 86400 -- 86400=24*3600

  • 动态计算(如距离当前日期的天数)

    SELECT dateDiff('day', today(), toDate('2025-12-31')) -- 计算今天到年底的天数:SELECT toDateTime(now(), 'Asia/Shanghai') -- 指定时区转换:ml-citation{ref="7" SELECT toDate(now(), 'UTC')

  1. 基础转换

    • toDate():字符串/时间戳 → 日期(YYYY-MM-DD

      SELECT toDate('2025-06-06 12:34:56') → 2025-06-06 :ml-citation{ref="11"

    • toDateTime():字符串 → 时间戳(精确到秒)

      SELECT toDateTime('2025-06-06 12:34:56') → 2025-06-06 12:34:56 

    • toDateTime64():高精度时间戳(支持毫秒/微秒)

      SELECT toDateTime64('2025-06-06 12:34:56.789', 3) → 2025-06-06 12:34:56.789 

  2. 提取时间分量

    • toYear()/toMonth()/toDayOfMonth():提取年/月/日

      SELECT toMonth(now()) → 6 

    • toHour()/toMinute()/toSecond():提取时/分/秒

      SELECT toMinute(now()) → 30 

  3. 时区转换

    • toTimeZone():调整时区

      SELECT toTimeZone(now(), 'Asia/Shanghai') 


🔤 二、字符串函数

  1. 基础操作

    • length():字节长度(非字符数)

      SELECT length('中文') → 6 -- UTF-8中文字符占3字节 

    • empty()/notEmpty():检测空字符串

      SELECT empty('') → 1 :ml-citation{ref="14" data="citationList"}

    • substring(str, start, length):截取子串

      SELECT substring('ClickHouse', 6, 5) → 'House' :ml-citation{ref="13" data="citationList"}

  2. 编码处理

    • lengthUTF8():UTF-8字符数

      SELECT lengthUTF8('中文') → 2 :ml-citation{ref="14" data="citationList"}

    • lower()/upper():大小写转换

      SELECT upper('hello') → 'HELLO' 


🧮 三、聚合函数

一、核心排名函数对比

函数排序特性相同值处理典型应用场景
ROW_NUMBER()绝对连续编号 (1,2,3...)相同值分配不同序号分页查询、TopN筛选12
RANK()允许并列排名 (如1,1,3)跳过后续序号竞赛排名、成绩榜单23
DENSE_RANK()连续排名 (如1,1,2)不跳过序号需要连续排名的业务场景35
NTILE(n)将数据均分到n个桶按比例分组数据分位数分析46

🔧 ‌二、ClickHouse实现方式

  1. 新版(21.3+)原生支持

    SELECT id, val, ROW_NUMBER() OVER(PARTITION BY id ORDER BY val DESC) AS row_num, RANK() OVER(PARTITION BY id ORDER BY val DESC) AS rank_val FROM test_data:ml-citation{ref="13,14" data="citationList"}

  2. 旧版(<21.3)替代方案
    使用数组函数模拟:

    SELECT id, val, arrayEnumerate(groupArray(val)) AS row_number, arrayEnumerateDense(groupArray(val)) AS dense_rank FROM ( SELECT * FROM test_data ORDER BY id, val DESC ) GROUP BY id:ml-citation{ref="12,14" data="citationList"}


📈 ‌三、实战应用场景

  1. 用户行为分析

    -- 计算每个用户的点击事件排名 SELECT user_id, event_time, ROW_NUMBER() OVER(PARTITION BY user_id ORDER BY event_time) AS event_seq FROM user_events

  2. 销售排行榜

    -- 按销售额计算店铺排名(允许并列) SELECT shop_id, sales, RANK() OVER(ORDER BY sales DESC) AS sales_rank FROM shop_data

  3. 数据分桶分析

    -- 将学生成绩分为4个等级 SELECT student_name, score, NTILE(4) OVER(ORDER BY score DESC) AS score_level FROM exam_results:ml-citation{ref="4,6" data="citationList"}

  4. 统计计算

    • sum()/avg():求和/平均值

      SELECT avg(salary) FROM employees

    • min()/max():最小值/最大值

      SELECT max(temperature) FROM sensors 

    • topK(N)(column):返回出现频率TOP N的值

      SELECT topK(3)(product) FROM orders

  5. 高级分析

    • varPop():总体方差

      SELECT varPop(score) FROM exams 

    • covarPop(x, y):协方差
    • SELECT covarPop(revenue, ad_cost) FROM ads 


⚖️ 四、条件函数

  1. 逻辑控制

    • if(cond, true_val, false_val):条件分支

      SELECT if(age > 18, 'Adult', 'Minor') FROM users :ml-citation{ref="9" data="citationList"}

    • multiIf(cond1, val1, cond2, val2, ..., else_val):多条件分支

      SELECT multiIf(score >= 90, 'A', score >= 80, 'B', 'C') FROM grades 

  2. 空值处理

    • isNull()/isNotNull():检测空值

      SELECT isNull(email) FROM contacts


💡 性能优化提示

  • 对‌低基数字符串列‌使用 LowCardinality(String) 类型,可提升聚合函数性能 7
  • 避免在 WHERE 子句中对字段进行函数转换(如 WHERE toDate(timestamp) = ...),优先存储预计算值 2

📊 ‌示例:综合查询

 

sqlCopy Code

-- 统计各月销售额TOP 3商品 SELECT toMonth(order_date) AS month, topK(3)(product_name) AS top_products FROM orders GROUP BY month;

clickhouse 核心配置

user.xml

<clickhouse><users><default><password></password><networks><ip>::/0</ip></networks><profile>default</profile><quota>default</quota><access_management>1</access_management><named_collection_control>1</named_collection_control><grants><query>GRANT ALL ON *.*</query></grants></default></users><!-- Quotas. --><quotas><default><interval><!-- Length of interval. --><duration>3600</duration><queries>0</queries><errors>0</errors><result_rows>0</result_rows><read_rows>0</read_rows><execution_time>0</execution_time></interval></default></quotas>
</clickhouse>

Java 操作ClickHouse

<dependency><groupId>com.clickhouse</groupId><artifactId>clickhouse-jdbc</artifactId><version>0.7.2</version>
</dependency>
  String url = "jdbc:ch:http://192.168.64.145:8123/clickhouse?compress=true&socket_timeout=300000";String user = "clickhouse";String password = "123456";Connection connection = DriverManager.getConnection(url, user, password);

一、架构设计对比

维度ClickHouseMySQL (InnoDB)
存储模型列式存储(按列压缩/读取)57行式存储(按行处理事务)67
架构类型MPP分布式架构(并行计算)411单机/主从架构(无原生分布式计算)46
表引擎支持MergeTree、Log等20+引擎(场景定制化)810固定InnoDB/MyISAM引擎(功能通用)6
索引机制稀疏索引(按排序键分区)10B+树索引(支持点查询/范围查询)68

⚡ 二、性能表现对比

  1. 查询性能

    • OLAP场景‌:ClickHouse在10亿级数据聚合查询速度超MySQL数百倍(列读取+向量化引擎)47
    • OLTP场景‌:MySQL点查询/事务处理更快(行锁+B+树索引)
    • 实测案例‌:
      • 同量级数据复杂查询:ClickHouse(30秒) vs MySQL(5分18秒)
      • 1亿行聚合:ClickHouse比MySQL快801倍11
  2. 写入性能

    • ClickHouse:适合‌批量插入‌(高吞吐),单条插入延迟高
    • MySQL:支持‌实时事务写入‌(行级锁保证一致性)
    • 相同1.6亿行数据插入:两者耗时接近(15-20分钟)
  3. 并发能力

    • ClickHouse:高并发读优化,写入并发受限
    • MySQL:支持高并发读写(MVCC机制)

🎯 三、功能特性对比

能力ClickHouseMySQL (InnoDB)
事务支持❌ 无ACID事务✅ 完整ACID事务(redo log/undo log)6
数据压缩✅ 列式压缩率高达90%+10⚠️ 有限压缩(取决于数据类型)6
分布式扩展✅ 原生分片/副本(如ReplicatedMergeTree)11❌ 需中间件(如ShardingSphere)
复杂分析函数✅ 支持窗口函数/数组操作/机器学习模型811⚠️ 基础聚合函数(高阶需代码实现)6

🌐 四、适用场景对比

场景推荐数据库原因
实时分析/数据仓库ClickHouse列存储+向量化引擎适配海量扫描聚合
交易系统(如支付/订单)MySQLACID事务保障数据一致性
时序数据/日志分析ClickHouse高效压缩+时间分区优化
频繁更新的业务数据MySQL行锁+MVCC支持高并发更新

⚠️ 五、关键限制对比

  • ClickHouse缺点‌:
    • 不支持事务与单行更新
    • JOIN操作性能较弱(推荐预关联宽表)
    • 内存消耗较高(需SSD+大内存配置)
  • MySQL缺点‌:
    • 大数据量下复杂查询效率骤降
    • 水平扩展复杂(分库分表维护成本高)

💎 总结:技术选型建议

  • 选ClickHouse若‌:
    ≥TB级分析场景、低延迟聚合查询、批量数据注入
  • 选MySQL若‌:
    高并发事务处理、频繁单行读写、强数据一致性保障

两者可组合使用:MySQL处理事务,ClickHouse同步数据加速分析。

EXPLAIN [AST|SYNTAX|PLAN|PIPELINE] SELECT ... -- 查看各阶段执行逻辑

  • 关键指标‌:关注ReadFromStorage(数据扫描量)、Aggregating(聚合耗时)
  • 优化点‌:索引命中率、分区裁剪效果

🏗️ ‌建表优化

CREATE TABLE events (

dt Date,

user_id UInt64,

event_type String

)

ENGINE = MergeTree()

PARTITION BY toYYYYMM(dt) -- 按时间分区 ORDER BY (dt, user_id) -- 排序键需匹配查询条件 TTL dt + INTERVAL 3 MONTH -- 自动过期旧数据

SETTINGS index_granularity = 8192; -- 减少稀疏索引内存占用

  • 分区策略‌:优先选择时间字段,避免超过1000分区
  • TTL应用‌:自动清理冷数据

⚡ ‌写入/删除优化

场景优化方案
高频写入批量写入(≥1000行/次),使用Buffer表引擎
删除数据22.8+版本用DELETE WHERE替代ALTER TABLE DROP PARTITION
更新数据优先设计为不可变数据模型,用ReplacingMergeTree去重

⚙️ ‌硬件参数调优

<!-- config.xml -->

<max_threads>16</max_threads> -- 并发查询线程数(≤CPU核心数) <max_memory_usage>10000000000</max_memory_usage> -- 单查询内存限制(10GB) <load_balancing>random</load_balancing> -- 分布式查询负载策略

📝 ‌语法规则优化

  1. 避免SELECT *‌:列式存储需明确指定字段
  2. JOIN改进‌:
    • 小表在右(SET join_algorithm='auto'
    • GLOBAL JOIN减少分布式查询网络传输
  3. 函数优化‌:
    • toStartOfHour()替代date_trunc('hour', dt)
  • IN代替JOIN:小表驱动大表时性能更优
  • 函数计算下推:WHERE toDate(ts) = '2023-01-01' → WHERE ts >= '2023-01-01 00:00:00' AND ts < '2023-01-02 00:00:00'1

ClickHouse 高级

 ‌一、列式存储与向量化引擎

  1. 列式存储优势
    • 按列存储数据,查询时仅读取所需列,显著降低I/O开销6
    • 同列数据类型一致,压缩率更高(如Delta编码压缩整数列)6
  2. 向量化执行引擎
    • 以数据块(Block)为单位处理,利用CPU SIMD指令并行计算6
    • 提升聚合函数(sum/avg)性能5-10倍6

⚙️ ‌二、存储引擎深度优化

1. ‌MergeTree引擎关键参数

CREATE TABLE logs ( ts DateTime, msg String )

ENGINE = MergeTree() PARTITION BY toYYYYMM(ts)

ORDER BY (ts, msg) SETTINGS index_granularity = 4096, -- 高频查询调小粒度 min_bytes_for_wide_part = 100M -- 小分区不启用宽表存储

  • 索引策略‌:ORDER BY字段需匹配高频查询条件(如时间范围过滤)1
  • TTL自动化管理‌:自动删除过期分区(TTL ts + INTERVAL 1 YEAR)1
2. ‌数据更新与删除
方法适用场景原理
ALTER TABLE UPDATE少量数据更新(20.8+版本)标记删除旧数据,异步插入新版本8
ALTER TABLE DROP PARTITION批量删除整个分区直接移除分区目录,瞬时生效8
ReplacingMergeTree去重场景(如最新状态记录)后台合并时保留版本最高行8

🚀 ‌三、分布式集群高级技巧

1. 分片策略优化
  • 写入路由‌:Distributed表引擎支持sharding_key自定义分片规则

    ENGINE = Distributed(cluster, db, table, cityHash64(user_id)) -- 按user_id哈希分片

  • 副本同步‌:ReplicatedMergeTree自动跨节点同步数据,通过ZooKeeper协调8
2. ‌查询负载均衡
<!-- config.xml -->
<remote_servers><cluster><shard><weight>3</weight></shard></cluster>
</remote_servers>
<load_balancing>random</load_balancing> 

🔍 ‌四、查询解析与执行优化

  1. 双解析器机制
    • 全SQL解析器‌:处理SELECT/CREATE等复杂语法
    • 流式解析器‌:高效解析INSERT数据(如CSV/JSON格式)

clickHouse 数据分析中常用SQL 函数

📊 ‌一、基础聚合函数

  1. 计数统计
    SELECT count() AS total_rows, uniq(user_id) AS distinct_users FROM logs -- 精确去重计数:ml-citation{ref="2,10" data="citationList"} 
  2. 数值聚合
    SELECT sum(revenue) AS total_revenue, avg(price) AS avg_price, median(duration) AS median_time -- 中位数计算:ml-citation{ref="2,13" data="citationList"} FROM transactions 

🔍 ‌二、高级统计分析函数

  1. 分布分析
    SELECT quantile(0.9)(response_time) AS p90, -- 百分位数:ml-citation{ref="2" data="citationList"} stddevPop(latency) AS population_std -- 总体标准差:ml-citation{ref="2,4" data="citationList"} FROM api_metrics 
  2. 直方图生成
    SELECT histogram(5)(age) AS age_distribution FROM users -- 自适应分箱直方图

🧩 ‌三、组合器增强功能

  1. 条件聚合
    SELECT sumIf(amount, status = 'paid') AS paid_total, -- 带条件的求和:ml-avgIf(salary, department = 'IT') AS it_avg_salary FROM orders 
  2. 数组/Map聚合

    SELECT sumMap(status_code, request_count) FROM web_logs -- Map结构聚合:ml-citation{ref="10" data="citationList"}


⏱️ ‌四、时间序列聚合

  1. 滑动窗口计算

    SELECT timestamp, avg(metric) OVER (PARTITION BY device_id ORDER BY timestamp RANGE INTERVAL 1 HOUR PRECEDING) -- 1小时滑动平 FROM iot_data

  2. 时间维度聚合

    SELECT toStartOfHour(event_time) AS hour, count() AS events_per_hour FROM events GROUP BY hour -- 按小时聚合:ml-citation{ref="12" data="citationList"}


🛠️ ‌五、工程优化技巧

  1. 预聚合物化视图

    CREATE MATERIALIZED VIEW daily_stats ENGINE = AggregatingMergeTree() AS SELECT toDate(time) AS day, sumState(amount) AS total_amount, uniqState(user_id) AS unique_users FROM orders GROUP BY day -- 增量聚合存储:ml-citation{ref="14" data="citationList"}

  2. NULL值处理

    SELECT avg(coalesce(score, 0)) FROM tests -- 将NULL替换为默认值计算

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.pswp.cn/bicheng/83868.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

理解JavaScript中map和parseInt的陷阱:一个常见的面试题解析

前言 在JavaScript面试中&#xff0c;map和parseInt的组合常常被用作考察候选人对这两个方法理解深度的题目。让我们通过一个简单的例子来深入探讨其中的原理。 问题现象 [1, 2, 3].map(parseInt) // 输出结果是什么&#xff1f;很多人可能会预期输出[1, 2, 3]&#xff0c;但…

字符串 金额转换

package heima.Test09;import java.util.Scanner;public class Money {public static void main(String[] args) {//1。键盘录入一个金额Scanner sc new Scanner(System.in);//请输入一个数据String result "";int money;while (true) {System.out.println("请…

静态相机中的 CCD和CMOS的区别

文章目录 CCD处理方式CMOS处理方式两者区别 首先根据 成像原理&#xff0c;CCD和CMOS的作用是一致的&#xff0c;都是为了将光子转化为数字图像&#xff0c;只是 转换的方式出现差异。 CCD处理方式 获取光子&#xff1a; 在电荷耦合器件&#xff08;CCD&#xff09;传感器中…

Pycharm的终端无法使用Anaconda命令行问题详细解决教程

很多初学者在Windows系统上安装了Anaconda后&#xff0c;在PyCharm终端中运行Conda命令时&#xff0c;会遇到以下错误&#xff1a; conda : 无法将“conda”项识别为 cmdlet、函数、脚本文件或可运行程序的名称。 请检查名称的拼写&#xff0c;如果包括路径&#xff0c;请确保…

[大语言模型]在个人电脑上部署ollama 并进行管理,最后配置AI程序开发助手.

ollama官网: 下载 https://ollama.com/ 安装 查看可以使用的模型 https://ollama.com/search 例如 https://ollama.com/library/deepseek-r1/tags # deepseek-r1:7bollama pull deepseek-r1:7b改token数量为409622 16384 ollama命令说明 ollama serve #&#xff1a…

TDengine 替换 Hadoop,彻底解决数据丢失问题 !

完全替换 Hadoop&#xff0c;彻底解决写入丢数问题 &#xff01;TDengine 助力积成电子更好服务电力客户&#xff01; 小T导读&#xff1a;在内蒙古某新能源集控项目中&#xff0c;三区需接入并分析大量风电、光伏逆变器及储能设备的监测数据。随着数据规模不断扩大&#xff0c…

从0到1认识ElasticStack

一、ES集群部署 操作系统Ubuntu22.04LTS/主机名IP地址主机配置elk9110.0.0.91/244Core8GB100GB磁盘elk9210.0.0.92/244Core8GB100GB磁盘elk9310.0.0.93/244Core8GB100GB磁盘 1. 什么是ElasticStack? # 官网 https://www.elastic.co/ ElasticStack早期名称为elk。 elk分别…

MySQL账号权限管理指南:安全创建账户与精细授权技巧

在MySQL数据库管理中&#xff0c;合理创建用户账号并分配精确权限是保障数据安全的核心环节。直接使用root账号进行所有操作不仅危险且难以审计操作行为。今天我们来全面解析MySQL账号创建与权限分配的专业方法。 一、为何需要创建独立账号&#xff1f; 最小权限原则&#xf…

DFT测试之TAP/SIB/TDR

TAP的作用 tap全称是test access port&#xff0c;是将jtag接口转为reset、sel、ce、ue、se、si、tck和so这一系列测试组件接口的模块。 jtag的接口主要是下面几个信号&#xff1a; 信号名称信号方向信号描述TCK&#xff08;测试时钟&#xff09;输入测试时钟&#xff0c;同…

Python对接印度股票数据源实战指南

Python对接印度股票数据源实战指南 基于StockTV API实现印度证券市场数据对接&#xff0c;覆盖实时行情、K线、指数等核心功能&#xff0c;提供完整开发方案与避坑指南 一、数据源选型要点&#xff08;技术维度对比&#xff09; 根据2025年最新实测数据&#xff0c;印度市场主…

usbutils工具的使用帮助

作为嵌入式系统开发中的常用工具&#xff0c;usbutils 是一套用于管理和调试USB设备的Linux命令行工具集。以下是其核心功能和使用方法的详细说明&#xff1a; 1. 工具组成 核心命令&#xff1a; lsusb&#xff1a;列出所有连接的USB设备及详细信息&#xff08;默认安装&#…

k8s入门教程(集群部署、使用,镜像拉取失败网络问题排查)

文章目录 K8S基础创建centos虚拟机K3S部署配置k3s容器containerd镜像2025年4月测试可用镜像源配置 Pod容器Deployment&#xff08;部署&#xff09;和ReplicaSet&#xff08;副本集&#xff09;镜像拉取失败问题排查 Service服务ServiceType取值 NameSpace命名空间声明式对象配…

使用VuePress2.X构建个人知识博客,并且用个人域名部署到GitHub Pages中

使用VuePress2.X构建个人知识博客&#xff0c;并且用个人域名部署到GitHub Pages中 什么是VuePress VuePress 是一个以 Markdown 为中心的静态网站生成器。你可以使用 Markdown 来书写内容&#xff08;如文档、博客等&#xff09;&#xff0c;然后 VuePress 会帮助你生成一个…

Vue3 + Element Plus 防止按钮重复点击的解决方案

在 Vue3 和 Element Plus 项目中&#xff0c;防止按钮重复点击是一个常见的需求&#xff0c;特别是在表单提交、支付等场景下。以下是几种实现方式&#xff1a; 1. 使用 Element Plus 的 loading 状态 Element Plus 的按钮组件本身就支持 loading 状态&#xff0c;这是最简单…

ES101系列09 | 运维、监控与性能优化

本篇文章主要讲解 ElasticSearch 中 DevOps 与性能优化的内容&#xff0c;包括集群部署最佳实践、容量规划、读写性能优化和缓存、熔断器等。 集群部署最佳实践 在生产环境中建议设置单一角色的节点。 Dedicated master eligible nodes&#xff1a;负责集群状态的管理。使用…

如何基于Mihomo Party http端口配置git与bash命令行代理

如何基于Mihomo Party http端口配置git与bash命令行代理 1. 确定Mihomo Party http端口配置 点击内核设置后即可查看 默认7892端口&#xff0c;开启允许局域网连接 2. 配置git代理 配置本机代理可以使用 127.0.0.1 配置局域网内其它机代理需要使用本机的非回环地址 IP&am…

SSL安全证书怎么安装?

SSI并非一个标准的、广为人知的安全证书类型&#xff0c;通常网站安装的是SSL/TLS证书&#xff0c;用于加密网站和用户浏览器之间的通信&#xff0c;保障数据传输安全。以下以安装SSL/TLS证书为例&#xff0c;介绍网站安装证书的步骤&#xff1a; 一、证书申请与获取 选择证书…

QPS、TPS、RT、IOQS、并发数等性能名词介绍

以下是计算机领域中 QPS、TPS 及相关性能名词的详细解释&#xff0c;涵盖定义、计算方法、典型场景和对比&#xff1a; 一、核心概念解析 1. QPS&#xff08;Queries Per Second&#xff09; 定义&#xff1a;每秒查询数&#xff0c;指系统每秒能处理的 请求数量&#xff08;…

MIT 6.S081 2020 Lab7 Multithreading 个人全流程

文章目录 零、写在前面1、XV6 中的锁2、XV6 进程切换3、触发调度 一、Uthread: switching between threads1.1 说明1.2 实现 二、Using threads2.1 说明2.2 实现 三、Barrier3.1 说明3.2 实现 零、写在前面 可以读一下xv6 book 的第六章 锁 以及 第七章 调度&#xff1a; htt…

C++中的变量

变量是C语言中存储数据的基本单元&#xff0c;用于在程序运行过程中动态存储和操作数据。掌握变量的定义、类型、作用域和使用规则是C语言编程的核心基础。以下从多个维度详细解析变量的关键知识&#xff1a; 一、变量的本质与定义 1. 本质 变量是内存中命名的存储单元&…