我想知道是否有一個用於mysql/php基準的(免費)工具。在MySql和PHP中插入隨機數據作爲基準
特別是,我想插入數以千計的數據到MySQL數據庫中,並用併發查詢來測試應用程序,看看它是否會持續。這是,在最壞的情況下測試應用程序。
我看到了一些付費工具,但沒有免費或可自定義的工具。
有什麼建議嗎?或任何腳本?
日Thnx
我想知道是否有一個用於mysql/php基準的(免費)工具。在MySql和PHP中插入隨機數據作爲基準
特別是,我想插入數以千計的數據到MySQL數據庫中,並用併發查詢來測試應用程序,看看它是否會持續。這是,在最壞的情況下測試應用程序。
我看到了一些付費工具,但沒有免費或可自定義的工具。
有什麼建議嗎?或任何腳本?
日Thnx
for($i=1;$i<5000;$i++){
$query = mysql_query("INSERT INTO something VALUES ($i)");
}
與表取代的東西; d
插入一條記錄到表中。
然後做:
INSERT IGNORE INTO table SELECT FLOOR(RAND()*100000) FROM table;
然後運行該行幾次。每次您將表格中的行數加倍(並且倍增速度非常快)。這比在PHP或其他代碼中生成數據要快得多。您可以修改您從中選擇RAND()的列,以及數字的範圍。也可以隨機生成文本,但可以做更多的工作。
您可以同時從多個終端運行此代碼以測試併發插入。 IGNORE將忽略任何主鍵衝突。
如果你想測試併發性,你將不得不線程你的插入/更新語句。
一個簡單的和非常簡單的方式(不進入叉/線程和所有的爵士樂)將做在bash如下
1中創建可執行的PHP腳本
#!/usr/bin/php -q
<?php
/*your php code to insert/update/whatever you want to test for concurrency*/
?>
2.叫它一個for循環通過追加&
所以它在後臺進行。
#!/bin/bash
for((i=0; i<100; i++))
do
/path/to/my/php/script.sh &;
done
wait;
您可以隨時通過創建具有不同的插入/更新/ SELECT查詢,並通過運行它們的循環多個PHP腳本擴展這個(記住,如果你想要更多的負載改變i<100
更高的數字。只是不編輯:添加了等待語句,在此之下你可以編寫其他命令/你可能想要做的事情,在你的MySQL數據庫溢出之後。
我做了一個快速搜索,在MySQL documentation =>http://dev.mysql.com/doc/refman/5.0/en/custom-benchmarks.html找到了以下頁面。年齡包含以下有趣的鏈接:
開放源代碼數據庫基準,可在 http://osdb.sourceforge.net/。
例如,你可以嘗試標杆包如sysbench的和 DBT2,可在http://sourceforge.net/projects/sysbench/,並且 http://osdldbt.sourceforge.net/#dbt2。這些軟件包可以帶來一個 系統,所以一定要僅在您的開發 系統上使用它們。
對於MySQL要快,您應該查看Memcached或Redis來緩存您的查詢。我非常喜歡Redis,感謝http://redistogo.com,您可以獲得免費(小)實例。大多數情況下,READS正在殺死你的服務器,而不是那些頻率較低(大部分時間)的WRITES。當WRITES經常是大部分時候,當你丟失一些數據時,這並不是一個真正的大案例。有大寫字率的網站例如Twitter或Facebook。但是,如果推特或Facebook的帖子丟失了,我不認爲這是世界末日。就像我之前指出的那樣,您可以使用Memcached或Redis輕鬆解決這個問題。
如果WRITES正在查殺,您可以查看bulk insert(如果可能),transactional insert, delayed inserts when not using InnoDB或partitioning。如果數據不是非常關鍵,那麼可以先將查詢放入內存中,然後定期進行批量插入。這樣,當你從MySQL讀取數據時,你會返回陳舊的數據(可能是問題)。但是,當你使用redis時,你可以輕鬆地將所有數據存儲在內存中,但是當你的服務器崩潰時,你可能會丟失數據,這可能是個大問題。
你是在Windows上還是你在Linux上? – Sudhi
http://dev.mysql.com/doc/refman/5.0/en/mysql-benchmarks.html不夠好? –