上次我們透過 Docker 安裝了 KingbaseES 資料庫,今天我們將開始學習並快速上手使用 KSQL。簡單來說,KSQL 本質上是一個客戶端工具,用於與資料庫進行互動。啟動後,我們可以像使用普通的 SQL 一樣執行查詢和操作,這將是一個很好的練習機會。
同時,我們也可以藉此機會探索 KSQL 是否有一些特別的功能或使用方式,瞭解它與傳統 SQL 工具的不同之處。
Ksql快速啟動
連線目標資料庫
使用命令 ksql -p 54321 -d test
,你就可以直接進入名為 test
的資料庫。透過更改命令中的資料庫名稱引數,你可以輕鬆切換並進入任何其他資料庫,只需替換 -d
後面的資料庫名稱即可。這種方式非常靈活,方便使用者在多個資料庫之間進行快速切換和操作。
基本命令
建表
這裡我們使用的是標準的建表語句,建立表的過程與傳統的 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
)
檢視錶結構
Ksql也有檢視錶結構的命令如下:\d todo_info
變數
KSQL 支援在會話中動態新增變數,採用的是鍵值對(Key-Value)結構。這意味著使用者可以在會話期間定義和修改變數,並在查詢和操作中靈活地使用這些變數。
\set flag 愛吃飯
\echo :flag
當然,這不僅僅包括常規的變數,也同樣適用於SQL語句中的變數。接下來,我們將具體演示如何在SQL操作中使用這些變數。
insert into todo_info(id,todo_info,todo_date) values(1,:'flag',sysdate);
變數的使用可以顯著節省你編寫重複程式碼或值所浪費的時間,透過使用變數,你能夠避免冗餘操作,極大地提升開發效率。
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;
儲存後,我們可以在Ksql視窗內直接執行命令:\i text.sql
這也是一個對於開發人員方便的命令。
生成HTML
我們可以將查詢得到的結果轉換為HTML格式,以便更好地進行視覺化展示。考慮到你的資料庫工具無法直接連線到生產資料庫,而生產資料庫的管理許可權通常僅限於DBA(資料庫管理員),因此可以讓DBA匯出查詢結果為HTML檔案供我們檢視。
這樣不僅能夠實現資料的視覺化,也能更直觀地分析和展示結果。我們不妨嘗試一下這個方法。
\H
執行命令後,我們看下查詢結果。
瀏覽器直接就可以開啟檢視。
如果想要還原回去,記得在執行這個命令:\a
統計 SQL 執行時間
在生產環境中,SQL執行時間是最常用的效能監控指標之一,透過這個指標,我們可以迅速識別出是否存在慢查詢的潛在隱患。特別是在上線新版本或新功能時,分析SQL執行時間能夠幫助我們及時發現效能問題,避免對系統的響應速度和穩定性產生負面影響。
接下來,我們將一起來看看如何開啟這一監控功能。
\timing on
開啟成功,這樣就可以直接在上線前就可以隱藏掉慢查詢的隱患。
執行計劃
另一個在生產環境中不可或缺的最佳化工具是執行計劃。執行計劃能夠揭示SQL查詢在執行過程中是否有效利用了索引,尤其在新表剛上線時,雖然SQL的執行時間較短,但隨著資料量的增長和查詢頻次的增加,問題可能會逐漸暴露。
因此,提前透過執行計劃分析潛在的效能瓶頸,可以有效避免後期的查詢效能下降。接下來,我們就來試一下如何檢視和分析執行計劃。
explain sql;
這是預期的執行計劃。如果你希望檢視實際執行過程中的真實效果,可以使用以下命令來獲取更詳細的執行情況和效能分析。
explain analyze sql;
這個命令如果你想要執行,切記在執行之前開啟事務,以確保在測試過程中不會對資料庫產生實際的修改或影響。執行完畢後,請務必回滾事務,以恢復資料的原始狀態,從而避免對資料庫環境造成任何不可預見的變化或損害。
退出Ksql
如果需要退出Ksql命令列,輸入 \q 即可
總結
透過今天的學習,我們已經對 KSQL 工具有了初步的瞭解,並掌握了基本的操作技巧。我們從連線資料庫、建立表結構到執行 SQL 指令碼,再到靈活運用變數和進行效能最佳化等方面,逐步熟悉了 KSQL 的強大功能。與傳統的 SQL 工具相比,KSQL 提供了更高效的工作流,尤其是在處理資料庫查詢和除錯時,靈活的命令列操作和視覺化功能為開發者節省了大量的時間和精力。
此外,KSQL 還支援實時執行 SQL 查詢並生成 HTML 格式的結果,極大地方便了資料的視覺化展示。透過引入執行計劃和 SQL 執行時間的監控,我們可以及時識別潛在的效能問題,確保系統在生產環境中的穩定性。
總之,KSQL 是一個功能強大且易於上手的資料庫客戶端工具,尤其適合需要頻繁與資料庫進行互動的開發人員和資料庫管理員。希望透過今天的實踐,大家能更好地掌握 KSQL,並將其應用到實際專案中,提高工作效率和系統效能。
我是努力的小雨,一名 Java 服務端碼農,潛心研究著 AI 技術的奧秘。我熱愛技術交流與分享,對開源社群充滿熱情。同時也是一位騰訊雲創作之星、阿里雲專家博主、華為云云享專家、掘金優秀作者。
💡 我將不吝分享我在技術道路上的個人探索與經驗,希望能為你的學習與成長帶來一些啟發與幫助。
🌟 歡迎關注努力的小雨!🌟