SQL 效能調校 - Partition
在MySQL中,分區(Partitioning)是一種數據庫設計技術,允許將表拆分成多個子表,每個子表稱為分區,以更有效地管理和查詢大量數據。這種技術的主要目的是提高性能,減少查詢時間,並更好地處理大型數據集。
實戰測試
1. 首先我們要先建立 測試用的表,並且使用測試用的流水號Table幫我們建立測試用的資料。
-- 如果表存在,則刪除它
DROP TABLE IF EXISTS local_test.t_big_data_practise;
-- 創建一個名為t_big_data_practise的新表
-- 這個表用於存儲大數據實踐數據,包括id、名稱、內容、創建日期、類型和IP地址等字段
CREATE TABLE local_test.t_big_data_practise
(
id bigint auto_increment, -- 自增ID
name varchar(20) null, -- 名稱
content_m mediumtext null, -- 中型文本內容
content_t text null, -- 文本內容
create_date datetime default CURRENT_TIMESTAMP not null, -- 創建日期,默認為當前時間
type char(2) null, -- 類型
ip bigint not null, -- IP地址,非空
primary key (id, create_date) -- 主鍵由id和創建日期組成
);
-- 向表中插入數據
-- 這個INSERT語句從local_test.sequence_number表和隨機數生成數據,插入到t_big_data_practise表中
INSERT INTO t_big_data_practise(name, content_m, content_t, create_date, type, ip)
SELECT HEX(RAND() * 0xFFFFFFFF), -- 隨機數的HEX表示
concat(HEX(RAND() * 0xFFFFFFFF), HEX(RAND() * 0xFFFFFFFF)), -- 兩個隨機HEX的結合
HEX(RAND() * 0xFFFFFFFF), -- 隨機數的HEX表示
DATE_ADD('2023-01-01', INTERVAL RAND() * 364 DAY), -- 隨機日期
LEFT(HEX(RAND() * 0xFFFFFFFF), 2), -- 隨機HEX表示的前兩個字符
ROUND(RAND() * 4294967295) -- 隨機整數
FROM local_test.sequence_number a
JOIN (SELECT id
FROM local_test.sequence_number
LIMIT 10) b;
-- 查詢t_big_data_practise表的數據統計信息
SELECT FORMAT(COUNT(1), 0) AS cnt, -- 計算數據行數
MIN(create_date) AS min_create_date, -- 最早的創建日期
MAX(create_date) AS max_create_date -- 最晚的創建日期
FROM t_big_data_practise;2. 我自己使用 Store Procedure 建立一個自動分區的程式
3. 測試
總結
Last updated