上周在 DTCC 大会的主会场看到了 SQLark 的身影,回来后我第一时间认真翻看了官网 sqlark.com。

惊喜的发现,SQLark V4.0 已经正式发布,并在极速迭代。

  • • 8 月 4 日,SQLark V4.0 发布,全新重构,包含多项性能优化和新特性。

  • • 8 月 10 日,SQLark V4.0.1 发版,修复 4 个问题。

  • • 8 月 18 日,SQLark V4.0.2 发版,修复 13 个问题。

  • • 8 月 27 日,SQLark V4.0.2 发版,修复 7 个问题。

于是,花了一些时间深度试用了一番,并对 SQLark V4.0 和 V3.10 做了对比。可以说,V4.0 是 SQLark 上线以来最重要的一次升级。「更快」和「更易用」是我对新版本的印象。

01. 一年前的剧透,兑现了

先来回顾一下 SQLark 的进化时间线。

2025 年 6 月,SQLark V3.5 发版,正式上线小百灵 AI 助手。2025 年 10 月,SQLark V3.7 发版,在通告中埋了句剧透:已启动新的技术框架研发,深度优化产品性能,明年见。2026 年 5 月,SQLark V3.10 发版,V3 系列收官版本,正式预告全新架构的 V4.0。

一年前的「明年见」,现在 SQLark V4.0 正式落地。多级缓存加异步更新、SQL 执行链路优化、Canvas 虚拟渲染。苦练的真功夫到底有多快,接着往下看。

02. SQLark V4.0 更快

接下来分享三组对照实测结果。

交代一下测试环境:Rocky Linux 9 系统(8c16g),运行 MySQL 8.0,PostgreSQL 18.6,以及达梦 DM8 数据库(开发版)。

[shawnyan@sqlark ~]$ hostnamectl
 Static hostname: sqlark.shawnyan.cn
Operating System: Rocky Linux 9.8 (Blue Onyx)
          Kernel: Linux 5.14.0-687.17.1.el9_8.x86_64
    Architecture: x86-64
[shawnyan@sqlark ~]$

在同一台机器上安装了 SQLark V4.0 和 V3.10,并进行对照测试。

第一组,10W 行 INSERT 批量执行

官方文档中描述:内测结果显示,以 MySQL 数据库为例,较复杂的单条查询语句(100 行以上)执行效率提升 10 倍以上,10W 行 INSERT 语句批量执行耗时缩短 70% 以上。

根据这一表述我设计了前两组实测。

准备测试脚本 insert_10w_multirow.sql,脚本是 100 条多值 INSERT,每条 1000 行,文件大小 2.8 MB。实测下来,SQLark V3.10 跑完约 60 秒;SQLark V4.0 执行完成仅需 10 秒。

SQLark V4.0 在 SQL 显示方面也有优化。如图所示,默认不自动换行,对于多行显示更友好。消息中的语句,如果过长就仅展示语句开头和结尾的部分文本,翻阅日志更方便。

图片

这里还有一点体验优化。当我从 100 条多值 INSERT 的窗口切换到其他查询窗口时,SQLark V3.10 会明显感觉到“卡卡的”,而 SQLark V4.0 则是秒切,很丝滑。

图片

第二组,107 行复杂查询

我这里有一条较为复杂的 SQL 语句,覆盖了 CTE、UNION ALL、三个窗口函数、EXISTS 相关子查询、六分支 CASE。目标表 perf_big 有 20 万行记录。SQLark V4.0 里连跑三次,3 分 01 秒、2 分 57 秒、2 分 55 秒,成绩稳定且符合预期。但是,同一条 SQL 拿到 V3.10 里,三分多钟没出结果,五分钟还没停我就开始焦虑了,最后在近 9 分钟的时候才跑完出结果。

图片

第三组,内存占用

DBA 天然对内存占用敏感,官方文档中虽然没有强调,但是在前两组反复测试过程中,我观察了一下 SQLark 的内存占用情况。发现新架构的 SQLark V4.0 确实比 V3.6 的开销更低。举个例子,相同连接和窗口状态,ps 看 RSS:V3.10 七个进程合计 1801 MB,单个渲染进程最高吃掉 1286 MB;V4.0.2 合计 1025 MB,省了 43%。

# SQLark v4.0:

[dmdba@sqlark ~]$ ps -eo pid,ppid,comm,rss,%mem,%cpu --sort=ppid,pid | awk 'BEGIN{IGNORECASE=1} /sqlark/ && !/awk/ {sum+=$4; printf "PID:%s | PPID:%s | COMMAND:%s | RSS:%.2f MB | %%MEM:%s | %%CPU:%s\n", $1, $2, $3, $4/1024, $5, $6} END{print "--------------------------------------------------"; printf "Total SQLark RSS Memory: %.2f MB\n", sum/1024}'
PID:5540 | PPID:2910 | COMMAND:sqlark | RSS:211.32 MB | %MEM:1.3 | %CPU:0.3
PID:5547 | PPID:5540 | COMMAND:sqlark | RSS:59.10 MB | %MEM:0.3 | %CPU:0.0
PID:5548 | PPID:5540 | COMMAND:sqlark | RSS:59.68 MB | %MEM:0.3 | %CPU:0.0
PID:5583 | PPID:5540 | COMMAND:sqlark | RSS:133.27 MB | %MEM:0.8 | %CPU:1.7
PID:5588 | PPID:5540 | COMMAND:sqlark | RSS:86.74 MB | %MEM:0.5 | %CPU:0.0
PID:5604 | PPID:5540 | COMMAND:sqlark | RSS:462.98 MB | %MEM:2.9 | %CPU:10.1
PID:5550 | PPID:5548 | COMMAND:sqlark | RSS:12.23 MB | %MEM:0.0 | %CPU:0.0
--------------------------------------------------
Total SQLark RSS Memory: 1025.32 MB


# SQLark v3.10:

[dmdba@sqlark ~]$ ps -eo pid,ppid,comm,rss,%mem,%cpu --sort=ppid,pid | awk 'BEGIN{IGNORECASE=1} /sqlark/ && !/awk/ {sum+=$4; printf "PID:%s | PPID:%s | COMMAND:%s | RSS:%.2f MB | %%MEM:%s | %%CPU:%s\n", $1, $2, $3, $4/1024, $5, $6} END{print "--------------------------------------------------"; printf "Total SQLark RSS Memory: %.2f MB\n", sum/1024}'
PID:7047 | PPID:3961 | COMMAND:sqlark | RSS:185.67 MB | %MEM:1.1 | %CPU:1.1
PID:7050 | PPID:7047 | COMMAND:sqlark | RSS:55.32 MB | %MEM:0.3 | %CPU:0.0
PID:7051 | PPID:7047 | COMMAND:sqlark | RSS:55.63 MB | %MEM:0.3 | %CPU:0.0
PID:7110 | PPID:7047 | COMMAND:sqlark | RSS:129.23 MB | %MEM:0.8 | %CPU:1.7
PID:7119 | PPID:7047 | COMMAND:sqlark | RSS:76.69 MB | %MEM:0.4 | %CPU:0.2
PID:7122 | PPID:7047 | COMMAND:sqlark | RSS:1286.86 MB | %MEM:8.1 | %CPU:23.4
PID:7053 | PPID:7051 | COMMAND:sqlark | RSS:11.61 MB | %MEM:0.0 | %CPU:0.0
--------------------------------------------------
Total SQLark RSS Memory: 1801.01 MB

这里还有一个细节。关闭 SQLark 窗口到程序完全退出的耗时也略有区别,SQLark V3.10 约 10s 进程才退出,而 V4.0 关闭即退出。

03. SQLark V4.0 更易用

3.1. 对象操作

我在 DM8 里造了 864,105 张表(SQLARK_TAB_ 系列)。(内心OS:不要问我为啥不是整数,因为这么多对象直接把磁盘撑爆了)

面对 86 万张表,其他 GUI 工具加载时要卡顿好久,但是在 SQLark V4.0 首次加载仅需 5 秒,之后翻页、跳页即点即出,页码翻到第 8642 页也不打艮。新增的按表注释搜索也很快:键入「400」,命中 3,633 张表,注释列直接展示在结果里,单页条数现在能拉到 300/500/1000。

图片

还有模式过滤。PG 库里勾选「已选择 2/3」,导航树、代码提示、查找对象全都只保留勾中的模式。上百个模式的库,终于不用在一堆 Schema 里翻自己的业务库了。做大型项目的 DBA 懂的都懂。

图片

3.2. 查询分组

SQLark 现在给保存查询加了分组。终于可以把常用的巡检 SQL 按分组保存到 SQLark 了,下次连上数据库直接运行文件就好。如演示,我创建了 monitor、optimizer、performance、dbcheck 四个分组,SQLark 不仅能从查询窗口保存文件,还新增支持脚本实体存放在 .SQLark/queryFiles 目录下,按连接名、分组名建文件夹,一个查询一个 SQL 文件。这意味着什么?攒了几年的存量脚本,直接往目录里拷,SQLark 自动识别成分组和查询。脚本不再锁死在工具里,这个设计值得称赞。

图片

3.3. 其他

转储增强。达梦数据库 DM 自增列自动加 SET IDENTITY_INSERT ON,PG 数据库的 GENERATED ALWAYS AS IDENTITY 列用 OVERRIDING SYSTEM VALUE,MySQL 自动关闭外键检查。三个库生成的脚本,我都实测过,没问题。

另外几个老 bug 的修复也验了:MySQL 编辑有主键表时 TINYINT 值被改成 1,PG 对象名带 $ 被误截断,这版都修掉了。

还有些小的改动:表结构和表数据页快速切换、复制三选(复制/复制字段名和数据/仅复制字段名)、连接分组跟着配置一起导入导出。都是每天常用的操作。说不上惊艳,但感受到了 SQLark 团队的细心与周到。

04. 一个彩蛋:DM8 的向量类型

测 DM8 时顺手试了下向量,个人估计是把部分 DM9 的特性下放到了 DM8 开发版里。我这个版本的 DM8 (DB Version 0x7000d)原生支持 VECTOR 类型。我在 SQLark V4.0 里建了张 DOC_VECTORS 表,embedding 列定义 VECTOR(3),建表、插入、TO_CHAR 查看,一路顺畅。之前命令行测过极限:维度上限 65535,float32 存储,L2、余弦、内积这些距离函数齐全。

-- 创建一个包含 VECTOR 列的示例表
CREATE TABLE doc_vectors (
    id NUMBER PRIMARY KEY,
    title VARCHAR2(200),
    -- 定义一个 3 维的向量列
    embedding VECTOR(3) 
);

COMMENT ON TABLE "MYDB_VECTOR"."DOC_VECTORS" IS '向量搜索';

-- 插入第一条数据
INSERT INTO doc_vectors (id, title, embedding) 
VALUES (1, 'DM9 简介', '[0.12, 0.34, 0.56]');

图片

SQLark 的小百灵 AI 走的是 embedding 路线,或许就是 DM9 在承接。DM9 加国产 AI 工具的组合,后面我找时间单独写一篇。

05. 写在最后

总结一下,SQLark V4.0 整体使用下来,与之前版本相比,明显感觉更快、更轻盈,如同新装的 Windows 11,干干净净,轻装上阵。面板风格保持一致,但多了很多小巧思,所以使用体验更顺手、易用。

一如既往,SQLark 仍旧支持 Windows 7 这类“老登”操作系统,以及各类信创 CPU 架构,毕竟政企内网还有大量的老机器没有替代完毕,一切要从客户真实需求出发。

图片

截至目前 SQLark 已帮助政府、金融、能源、通信等 100+ 家企业完成全量迁移。2025 年 10 月 24 日,SQLark 的用户已超过 3 万。今年 10 月 24 日,SQLark 的用户会突破 10 万么?我们拭目以待。


Have a nice day ~ ☕

👉 关注「少安事务所」,与你分享国产基础软件行业资讯。如果这篇文章为你带来了灵感或启发,请帮忙『点赞、转发、推荐』,感谢!ღ( ´・ᴗ・` )~

Logo

openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构

更多推荐