iT邦幫忙

DAY 5
2

MySQL漫談,由使用Python撰寫之MySQL工具程式出發系列 第 5

MySQL漫談,由使用Python撰寫之MySQL工具程式出發(5)

今天介紹 Memory 儲存引擎.顧名思義就是將資料放到記憶體裡面,速度快.
MySQL的Memory 儲存引擎有以下特色:高速,不支持Transaction,
以Hash index 為主,也可以用 Btree index.
限制是:不能用 TEXT/BLOB 資料型態,row 是固定大小.
5.1 Memory 儲存引擎範例
有關之參數 max_heap_table_size.

-- 欲使用 200M 的 Memory,則可以用以下指令

SET SESSION max_heap_table_size = 1024 * 1024 * 200;

-- 建立一個使用 Memory 的 Table
CREATE TABLE filler(
id INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY
) ENGINE=Memory;

-- 建立一個 Stored Procedure
DELIMITER $$

CREATE PROCEDURE prc_filler(cnt INT)
BEGIN
        DECLARE _cnt INT;
        SET _cnt = 1;
        WHILE _cnt <= cnt DO
                INSERT
                INTO    filler
                SELECT  _cnt;
                SET _cnt = _cnt + 1;
        END WHILE;
END
$$

DELIMITER ;

-- 建立一個一百萬筆的序列
START TRANSACTION;
CALL prc_filler(1000000);
COMMIT;

-- 查看資料及空間使用情況
SELECT COUNT(id), MAX(id)
FROM filler;
+-----------+---------+
| COUNT(id) | MAX(id) |
+-----------+---------+
|   1000000 | 1000000 |
+-----------+---------+
1 row in set (0.06 sec)

SELECT table_name, table_rows, row_format,
        ROUND(data_length / 1048576) AS 'data(M)',
        ROUND(index_length / 1048576) AS 'index(M)'
FROM INFORMATION_SCHEMA.TABLES
WHERE table_name = 'filler';

+------------+------------+------------+---------+----------+
| table_name | table_rows | row_format | data(M) | index(M) |
+------------+------------+------------+---------+----------+
| filler     |    1000000 | Fixed      |      15 |       15 |
+------------+------------+------------+---------+----------+

5.2 用途討論
在實務應用上,像是作壓力測試,或是驗證修改參數的成效,或是開發系統時,在在都需要產生測試資料.而要產生測試資料時,數目是一個重點,例如一般常會使用一百萬筆資料,或是一千萬筆資料,而要產生這樣多的資料時,就可以利用 Memory 儲存引擎,先產生一個 filler table,再來作 JOIN,這樣就能夠快速的產生出測試資料.


上一篇
MySQL漫談,由使用Python撰寫之MySQL工具程式出發(4)
下一篇
MySQL漫談,由使用Python撰寫之MySQL工具程式出發(6)
系列文
MySQL漫談,由使用Python撰寫之MySQL工具程式出發30

1 則留言

我要留言

立即登入留言