MySQL壓力測試中定製sysbench的Lua模板
對於sysbench的定製,自己給自己定了一個小目標,但是實踐的時候發現,難度比想象的要大很多。
都說Lua很簡單,效能很不錯,但是定製sysbench的模板的時候,越是深入去看,越覺得少了一些東西。
這個時候我想起了學習的週期和複雜度的一個說法,如果想快速學習一門技術,一種方式是透過程式碼來理解它的實現,來反推它的邏輯,這種方式的難度極大,而我前幾天發現嘗試的就是這種,這種方式非常苦悶,但是如果能夠沉下心來,看程式碼看到一種程度之後,有了感覺相信就會融會貫通了。
還有一種方式,算是捷徑,就是去聽聽作者怎麼說,透過他的分享來從整體對一個專案有一個基本的認識和了解,就好比你去拜訪一個朋友,他熱情的把你領進門,帶著你走走客廳,走走臥室,給你介紹房子的裝修風格,裡面的傢俱和電器,為什麼要這麼設計,很快你就能夠對這一切熟悉起來。這種方式很好,而且最省事,但是可遇不可求。
對於sysbench的學習如果有這樣的方式也是極好的,所以我們就可以想辦法找找sysbench作者的心路歷程。自從0.5版本之後,有相當長的一段時間就沒有深入維護了。
而從2016年開始,重啟了這個計劃。
所以sysbench是依舊是我們MySQL壓力測試的老朋友,這麼多年,還依然是主流的測試工具,自有他流行的道理。
回到定製Lua模板的部分,如果我們反推Lua的邏輯,和sysbench聯絡起來,我們可能要花上幾倍的代價,不如聽聽sysbench作者怎麼說。
壓力測試前,我們配置一下環境,建立一個使用者和資料庫。
mysql> create user sysbench_test identified by 'mysql';
Query OK, 0 rows affected (0.08 sec)
mysql> create database sysbench_db character set utf8;
Query OK, 1 row affected (0.08 sec)
mysql> grant all on sysbench_db.* to sysbench_test@'%';
Query OK, 0 rows affected (0.00 sec)
然後配置一個最簡單的Lua模板,內容如下:
#!/usr/bin/env sysbench
function event()
db_query(
"SELECT 1"
)
end
執行的時候,配置執行許可權,chmod +x test1.lua,然後執行
./test1.lua --mysql-user=sysbench_test --mysql-password=mysql --mysql-host=127.0.0.1 --mysql-port=65535 --mysql-db=sysbench_db run
其中引數--mysql-user=sysbench_test --mysql-password=mysql --mysql-host=127.0.0.1 --mysql-port=65535是為了連線,如果你是使用3306埠的預設配置命令就更簡單了,輸出如下:
此外我們還可以驗證命令選項。我們推出第2個Lua模板 test2.lua
sysbench.cmdline.options = {
tables = {"Number of tables", 1},
table_size = {"Number of rows per table", 10000},
create_secondary = {"Create a secondary key", true}
}
如果命令選項不對,會檢查出來。
sysbench --tbales=8 test2.lua --mysql-user=sysbench_test --mysql-password=mysql --mysql-host=127.0.0.1 --mysql-port=65535 --mysql-db=sysbench_db run
invalid option: --tbales=8
如果沒有問題,則可以使用help來得到初始化後的選項值。
# sysbench test2.lua help
sysbench 1.0.3 (using bundled LuaJIT 2.1.0-beta2)
test2.lua options:
--table_size=N Number of rows per table [10000]
--tables=N Number of tables [1]
--create_secondary[=on|off] Create a secondary key [on]
接下來就是重點了,關於SQL API的定製,其實是有規則可循的。
我們來看看第3個Lua模板,test3.lua
function thread_init()
drv = sysbench.sql.driver()
con = drv:connect()
end
function event()
con:query("SELECT 1"
)
end
function thread_done()
con:disconnect()
end
使用命令即可完成測試。
sysbench test3.lua --mysql-user=sysbench_test --mysql-password=mysql --mysql-host=127.0.0.1 --mysql-port=65535 --mysql-db=sysbench_db run
後續繼續補充更多的Lua模板。來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/23718752/viewspace-2148808/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Mysql 壓力測試工具sysbenchMySql
- mysql壓力測試在青雲PCIE盤sysbench版本MySql
- MySQL DB Server 上面安裝 sysbench 作壓力測試MySqlServer
- mysql叢集壓力測試在京東雲盤:sysbench版本MySql
- mysql壓力測試在京東雲ssd雲盤sysbench版本MySql
- mysql之 sysbench1.0.3 安裝與系統壓力測試MySql
- NewSQL資料庫壓力測試工具系列——SysbenchSQL資料庫
- 使用sysbench壓力測試MySQL(一)(r11筆記第3天)MySql筆記
- sysbench 測試MySQLMySql
- 壓力測試sysbench安裝及引數介紹
- [資料庫]000 - ?Sysbench 資料庫壓力測試工具資料庫
- sysbench測試mysql oltpMySql
- MySQL字元函式的壓力測試MySql字元函式
- 使用 sysbench 測試 MySQL 的效能MySql
- 壓測工具之Sysbench1.0(2_MySQL壓測)MySql
- 使用sysbench測試Mysql效能MySql
- MySQL 效能壓測工具-sysbench,從入門到自定義測試項MySql
- 使用 sysbench 測試 MySQL 的效能(二)MySql
- MySQL基準壓力測試工具MySQLSlapMySql
- MySQL基準測試工具sysbenchMySql
- 【Mysql】sysbench基準測試工具MySql
- mysql壓力測試在京東雲ssd雲盤(tpccmysql壓測)MySql
- 從sysbench中學習Lua
- mysql單例項壓力測試在青雲MySql單例
- 用mysqlslap對MySQL進行壓力測試MySql
- ORACLE壓力測試Oracle
- laravel壓力測試Laravel
- MACOSXApacheab壓力測試MacApache
- NGINX壓力測試Nginx
- mysqlslap壓力測試MySql
- 壓力測試工具
- mysql之 mysql資料庫壓力測試工具(mysqlslap)MySql資料庫
- sysbench壓測實踐
- mysql效能測試工具之sysbench薦MySql
- MySQL 5.7和8.0 MHA架構下sysbench壓測MySql架構
- nginx壓力測試方法:Nginx
- 壓力測試指令碼指令碼
- 【MySQL】利用sysbench進行基準測試MySql