快速上手 KSQL:輕鬆與資料庫互動的利器

努力的小雨發表於2024-11-14

上次我們透過 Docker 安裝了 KingbaseES 資料庫,今天我們將開始學習並快速上手使用 KSQL。簡單來說,KSQL 本質上是一個客戶端工具,用於與資料庫進行互動。啟動後,我們可以像使用普通的 SQL 一樣執行查詢和操作,這將是一個很好的練習機會。

同時,我們也可以藉此機會探索 KSQL 是否有一些特別的功能或使用方式,瞭解它與傳統 SQL 工具的不同之處。

Ksql快速啟動

連線目標資料庫

使用命令 ksql -p 54321 -d test,你就可以直接進入名為 test 的資料庫。透過更改命令中的資料庫名稱引數,你可以輕鬆切換並進入任何其他資料庫,只需替換 -d 後面的資料庫名稱即可。這種方式非常靈活,方便使用者在多個資料庫之間進行快速切換和操作。

image

基本命令

建表

這裡我們使用的是標準的建表語句,建立表的過程與傳統的 SQL 語法完全一致。

create table todo_info(
id number primary key,
todo_info varchar(1000) not null,
todo_Date date not null,
done boolean not null default false
)

image

檢視錶結構

Ksql也有檢視錶結構的命令如下:\d todo_info

image

變數

KSQL 支援在會話中動態新增變數,採用的是鍵值對(Key-Value)結構。這意味著使用者可以在會話期間定義和修改變數,並在查詢和操作中靈活地使用這些變數。

\set flag 愛吃飯

\echo :flag

image

當然,這不僅僅包括常規的變數,也同樣適用於SQL語句中的變數。接下來,我們將具體演示如何在SQL操作中使用這些變數。

insert into todo_info(id,todo_info,todo_date) values(1,:'flag',sysdate);

image

變數的使用可以顯著節省你編寫重複程式碼或值所浪費的時間,透過使用變數,你能夠避免冗餘操作,極大地提升開發效率。

SQL指令碼

KSQL 同樣支援執行 SQL 指令碼,這是其強大的功能之一。接下來,我們將透過一個實際的示例來進行測試。首先,我們需要進入 Docker 容器環境,並確保在當前使用者的工作目錄下編輯一個測試指令碼。

需要注意的是,你也可以根據需要,編輯並使用你自己的 SQL 指令碼。為了幫助你快速入門,下面展示的是一個簡單的測試指令碼內容:

CREATE TABLE t1
(
a int,
b int
);

INSERT INTO t1 VALUES(1,1);
INSERT INTO t1 VALUES(2,2);

SELECT * FROM t1;

image

儲存後,我們可以在Ksql視窗內直接執行命令:\i text.sql

image

這也是一個對於開發人員方便的命令。

生成HTML

我們可以將查詢得到的結果轉換為HTML格式,以便更好地進行視覺化展示。考慮到你的資料庫工具無法直接連線到生產資料庫,而生產資料庫的管理許可權通常僅限於DBA(資料庫管理員),因此可以讓DBA匯出查詢結果為HTML檔案供我們檢視。

這樣不僅能夠實現資料的視覺化,也能更直觀地分析和展示結果。我們不妨嘗試一下這個方法。

\H

執行命令後,我們看下查詢結果。

image

瀏覽器直接就可以開啟檢視。

image

如果想要還原回去,記得在執行這個命令:\a

image

統計 SQL 執行時間

在生產環境中,SQL執行時間是最常用的效能監控指標之一,透過這個指標,我們可以迅速識別出是否存在慢查詢的潛在隱患。特別是在上線新版本或新功能時,分析SQL執行時間能夠幫助我們及時發現效能問題,避免對系統的響應速度和穩定性產生負面影響。

接下來,我們將一起來看看如何開啟這一監控功能。

\timing on

image

開啟成功,這樣就可以直接在上線前就可以隱藏掉慢查詢的隱患。

執行計劃

另一個在生產環境中不可或缺的最佳化工具是執行計劃。執行計劃能夠揭示SQL查詢在執行過程中是否有效利用了索引,尤其在新表剛上線時,雖然SQL的執行時間較短,但隨著資料量的增長和查詢頻次的增加,問題可能會逐漸暴露。

因此,提前透過執行計劃分析潛在的效能瓶頸,可以有效避免後期的查詢效能下降。接下來,我們就來試一下如何檢視和分析執行計劃。

explain sql;

image

這是預期的執行計劃。如果你希望檢視實際執行過程中的真實效果,可以使用以下命令來獲取更詳細的執行情況和效能分析。

explain analyze sql;

這個命令如果你想要執行,切記在執行之前開啟事務,以確保在測試過程中不會對資料庫產生實際的修改或影響。執行完畢後,請務必回滾事務,以恢復資料的原始狀態,從而避免對資料庫環境造成任何不可預見的變化或損害。

退出Ksql

如果需要退出Ksql命令列,輸入 \q 即可

image

總結

透過今天的學習,我們已經對 KSQL 工具有了初步的瞭解,並掌握了基本的操作技巧。我們從連線資料庫、建立表結構到執行 SQL 指令碼,再到靈活運用變數和進行效能最佳化等方面,逐步熟悉了 KSQL 的強大功能。與傳統的 SQL 工具相比,KSQL 提供了更高效的工作流,尤其是在處理資料庫查詢和除錯時,靈活的命令列操作和視覺化功能為開發者節省了大量的時間和精力。

此外,KSQL 還支援實時執行 SQL 查詢並生成 HTML 格式的結果,極大地方便了資料的視覺化展示。透過引入執行計劃和 SQL 執行時間的監控,我們可以及時識別潛在的效能問題,確保系統在生產環境中的穩定性。

總之,KSQL 是一個功能強大且易於上手的資料庫客戶端工具,尤其適合需要頻繁與資料庫進行互動的開發人員和資料庫管理員。希望透過今天的實踐,大家能更好地掌握 KSQL,並將其應用到實際專案中,提高工作效率和系統效能。


我是努力的小雨,一名 Java 服務端碼農,潛心研究著 AI 技術的奧秘。我熱愛技術交流與分享,對開源社群充滿熱情。同時也是一位騰訊雲創作之星、阿里雲專家博主、華為云云享專家、掘金優秀作者。

💡 我將不吝分享我在技術道路上的個人探索與經驗,希望能為你的學習與成長帶來一些啟發與幫助。

🌟 歡迎關注努力的小雨!🌟

相關文章