MemSQL初體驗 - (2)初始化測試環境

junsansi發表於2012-06-26

2、配置測試環境

  建立一個使用者,方便後續使用:
 

      MemSQL> grant all on *.* to jss identified by "jss"  with grant option;
      Query OK, 1 row affected (0.03 sec)
  本來是可選的with grant option選項在MemSQL中是必選項。另外注意password在當前的MemSQL版本中沒什麼用,不管建什麼使用者,指定密碼反倒進不去,也不知道是不是BUG。

為了能夠與MySQL的效能做對比,這裡我們採取與MySQL資料庫相同的物件結構。
  建庫與建表:
 

      MemSQL> create database jssdb;
    Query OK, 0 rows affected (0.21 sec)

    MemSQL> use jssdb;
      Database changed
      MemSQL> CREATE TABLE user    (
          ->  user_id INT(10) UNSIGNED NOT NULL  auto_increment, 
          ->  user_name VARCHAR(50) DEFAULT NULL, 
          ->  user_email VARCHAR(255) DEFAULT NULL, 
          ->  created DATETIME DEFAULT NULL, 
          ->  PRIMARY KEY (user_id),
          ->  KEY ind_user_name (user_name))
          ->  auto_increment=1;
      Query OK, 0 rows affected (10.79 sec)

  建庫建表語句與MySQL中一樣,只不過建表時沒有指定儲存引擎,因為MemSQL畢竟不是MySQL,沒必要指定儲存引擎,即使指定了也沒啥用。
  從上面的結果看起來建表費時不短啊,如果注意檢視日誌的話,會發現大部分時間都花在了編譯上:
  INFO: Table jssdb.user compiled in 10757 miliseconds (5355  miliseconds for header)
  真正的建立是很快的,因此把user表刪除再重新建立,效率就上去了,這也是前面所說的,第一次執行很慢,因為它要編譯。

然後初始化一些資料,這裡也是為了更好的對比效能,直接使用MySQL資料庫中的資料。也順道演示一下如何從MySQL庫中遷移資料到MemSQL中。我先概括一下,基本上,跟從MySQL->MySQL一樣。
  從MySQL資料庫中匯出資料:
 

    $ mysqldump -ujss -pjss --tables jssdb user -t > tbls.sql

匯入資料,也是使mysql命令列匯入:
 

    $ mysql -u root -h 127.0.0.1 -P 3308 --prompt="MemSQL>  " jssdb < tbls.sql

  做為一款新生軟體,儘管是主打與MySQL的高度相容,但實際也不可能所有功能都完全相容,就dump出的sql檔案來說,其中就有不少語句是MemSQL不支援的,但是這也沒關係,它並不會中斷工作,只是會在後臺日志中丟擲相應的警告,類似這樣:
 
      WARNING: WARN DISABLED LOCKDOWN: LOCK TABLES .. WRITE / LOCK TABLES  .. LOW_PRIORITY WRITE / LOCK TABLES .. READ LOCAL
      WARNING: WARN DISABLED LOCKDOWN: ALTER TABLE DISABLE KEYS
      WARNING: WARN DISABLED LOCKDOWN: ALTER TABLE ENABLE KEYS

七十餘萬條記錄,匯入還是挺快的,執行成功後,登入到MemSQL中驗證一下:

      MemSQL> select count(0) from user;
      +----------+
      | count(0) |
      +----------+
      |   765952 |
      +----------+
      1 row in set (0.24 sec)

為了能夠對比效能,我這裡使用perl寫了幾個簡單的指令碼,大致思路是並行多個執行緒執行SQL語句,通過user_name列(該列有索引)查詢user表,user_name的值隨機生成。
==========================================
相關文章:

MemSQL初體驗 - (1)傳說中速度最快的關聯式資料庫軟體

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/7607759/viewspace-733791/,如需轉載,請註明出處,否則將追究法律責任。

相關文章