ClickHouse 与 MySQL 对比指南 —— 写给有 MySQL 经验的用户 一、先说结论:两者根本不是同一类数据库 理解 ClickHouse 最容易踩的坑,就是把它当成"性能更强的 MySQL"。实际上两者的设计目标完全不同: 维度 MySQL ClickHouse 定位 OLTP(联机事务处理) OLAP(联机分析处理) 典型场景 下单、支付、用户信息增删改查 日志分析、报表、BI、时序数据、用户行为分析 存储方式 行式存储(row-based) 列式存储(column-based) 单次查询数据量 少量行,高频次 大量行,低频次但计算量大 事务 完整 ACID 事务 不支持传统事务,写入近似"追加" 单条数据修改 高效(UPDATE/DELETE 直接改) 低效,官方不推荐频繁做 一句话理解: MySQL 擅长"找到某一行/几行数据并精确修改",ClickHouse 擅长"扫描亿万行数据做聚合计算"。 二、使用方式与功能对比 2.1 建表语法差异 MySQL: CREATE TABLE orders ( id BIGINT AUTO_INCREMENT PRIMARY KEY , user_id BIGINT , amount DECIMAL ( 10 , 2 ), created_at DATETIME ) ENGINE = InnoDB ; ClickHouse: CREATE TABLE orders ( id UInt64, user_id UInt64, amount Decimal ( 10 , 2 ), created_at DateTime ) ENGINE = MergeTree() ORDER BY (user_id, created_at) PARTITION BY toYYYYMM(created_at); 几个关键差异点: 没有 AUTO_INCREMENT :ClickHouse 没有自增主键的概念,通常用雪花算法、UUID 或业务自带的唯一键。 ...
PostgreSQL 入门指南:写给熟悉 MySQL 的开发者 本文面向已经掌握 MySQL 的读者,目的是快速建立 PostgreSQL 的知识框架,内容分四部分:基础用法差异、内部架构对比、索引机制对比、数据存储与流动过程。 一、基础用法差异 1.1 连接与客户端 MySQL PostgreSQL 命令行客户端 mysql -u root -p psql -U postgres -d mydb 默认端口 3306 5432 认证配置 mysql.user 表 pg_hba.conf ,与角色系统分离 1.2 数据类型差异 用途 MySQL PostgreSQL 自增主键 AUTO_INCREMENT GENERATED ALWAYS AS IDENTITY (新写法)或 SERIAL (旧写法,底层是 SEQUENCE) 布尔值 常用 TINYINT(1) 模拟 原生 BOOLEAN JSON JSON JSON 和 JSONB (二进制存储、可建索引,通常首选) 数组 不支持,需用逗号拼接字符串或 JSON 原生 ARRAY 类型,如 INT[] 枚举 ENUM('a','b') 需 CREATE TYPE ... AS ENUM ,或改用 CHECK 约束 UUID CHAR(36) 或 BINARY(16) 原生 UUID 类型 1.3 标识符大小写规则(重要易错点) MySQL:表名大小写敏感性取决于操作系统(Linux 敏感、Windows 不敏感),列名一般不敏感。 PostgreSQL: 所有未加双引号的标识符都会被自动转成小写 。 SELECT * FROM MyTable 等价于 select * from mytable 。如果建表时用双引号保留了大小写(如 "MyTable" ),之后每次引用都必须加双引号,否则会报"关系不存在"的错误。 字符串必须用单引号;双引号在 PostgreSQL 中专门用于标识符,不能像 MySQL 那样偶尔"双引号当字符串用"。 1.4 自增主键写法对...