mysql修改默認字符和默認存儲引擎

mysql修改默認字符和默認存儲引擎  

2011-06-09 08:52:49|  分類: my存儲引擎 |  標籤:mysql  innodb  utf8  engine  引擎   |字號 訂閱

>show variables like 'character%'; #執行編碼顯示
+--------------------------+----------------------------+
| Variable_name | Value |
+--------------------------+----------------------------+
| character_set_client | latin1 |
| character_set_connection | latin1 |
| character_set_database | latin1 |
| character_set_filesystem | binary |
| character_set_results | latin1 |
| character_set_server | latin1 |
| character_set_system | utf8 |
| character_sets_dir | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+

三個MySQL的系統變量是:

1. character_set_client,終端字符集,告訴Server客戶端提交的SQL語句的編碼格式

2. character_set_connection,連接字符集,是服務器翻譯SQL語句時用到的編碼格式

3. character_set_results,返回的結果集的字符集,是服務器返回結果集之前把結果集轉換成的編碼格式

在某些時候,我們續要修改mysql默認數據庫的編碼,以保證某些遷移的程序可以正常顯示,編輯my.cnf文件進行編碼修改,windows可以直接用Mysql Server Instance Config Wizard 進行設置

在linux下修改3個my.cnf的1個/etc/my.cnf文件

找到客戶端配置[client] 在下面添加
default-character-set=utf8 默認字符集爲utf8
在找到[mysqld] 添加
default-character-set=utf8 默認字符集爲utf8
init_connect='SET NAMES utf8' (設定連接mysql數據庫時使用utf8編碼,以讓mysql數據庫爲utf8運行)

修改好後,重新啓動mysql 即可,查詢一下show variables like 'character%';
+--------------------------+----------------------------+
| Variable_name | Value |
+--------------------------+----------------------------+
| character_set_client | utf8 |
| character_set_connection | utf8 |
| character_set_database | utf8 |
| character_set_filesystem | binary |
| character_set_results | utf8 |
| character_set_server | utf8 |
| character_set_system | utf8 |
| character_sets_dir | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+

mysql存儲引擎:

MySQL服務器採用了模塊化風格,各部分之間保持相對獨立,尤其體現在存儲架構上。存儲引擎負責管理數據存儲,以及MySQL的索引管理。通過定 義的API,MySQL服務器能夠與存儲引擎進行通信。目前使用最多的是MyISAM和InnoDB。InnoDB被Oracle收購後,MySQL自行 開發的新存儲引擎Falcon將在MySQL6.0版本引進。

MyISAM引擎是一種非事務性的引擎,提供高速存儲和檢索,以及全文搜索能力,適合數據倉庫等查詢頻繁的應用。MyISAM中,一個table實際保存爲三個文件,.frm存儲表定義,.MYD存儲數據,.MYI存儲索引。

InnoDB 則是一種支持事務的引擎。所以的數據存儲在一個或者多個數據文件中,支持類似於Oracle的鎖機制。一般在OLTP應用中使用較廣泛。如果沒有指定 InnoDB配置選項,MySQL將在MySQL數據目錄下創建一個名爲ibdata1的自動擴展數據文件,以及兩個名爲ib_logfile0和 ib_logfile1的日誌文件。

創建table時可以通過engine關鍵字指定使用的存儲引擎,如果省略則使用系統默認的存儲引擎:

CREATE TABLE t (i INT) ENGINE = MYISAM;

 

查看系統中支持的存儲引擎類型:
mysql> show engines;
+————+———+—————————————————————-+
| Engine | Support | Comment |
+————+———+—————————————————————-+
| MyISAM | YES | Default engine as of MySQL 3.23 with great performance |
| MEMORY | YES | Hash based, stored in memory, useful for temporary tables |
| InnoDB | DEFAULT | Supports transactions, row-level locking, and foreign keys |
| BerkeleyDB | NO | Supports transactions and page-level locking |
| BLACKHOLE | NO | /dev/null storage engine (anything you write to it disappears) |
| EXAMPLE | NO | Example storage engine |
| ARCHIVE | YES | Archive storage engine |
| CSV | NO | CSV storage engine |
| ndbcluster | NO | Clustered, fault-tolerant, memory-based tables |
| FEDERATED | NO | Federated MySQL storage engine |
| MRG_MYISAM | YES | Collection of identical MyISAM tables |
| ISAM | NO | Obsolete storage engine |
+————+———+—————————————————————-+
12 rows in set (0.00 sec)

標準安裝程序中只提供部分引擎的支持,如果需要使用其他的存儲引擎,需要使用源代碼加不同的參數重新編譯。其中DEFAULT表明系統的默認存儲引擎,可以通過修改配置參數來變更:
default-storage-engine=MyISAM

查看某個存儲引擎的具體信息

mysql> show engine InnoDB status\G;

一般安裝系統默認是INNODB
default-storage-engine=INNODB

  1. 可以在啓動數據庫服務器時在命令行後面加上--default-storage-engine或--default-table-type選項 。

  2. 更靈活的方式是在隨MySQL服務器發佈同時提供的MySQL客戶端時指定使用的存儲引擎。最直接的方式是在創建表時指定存儲引擎的類型,向下面這樣:

  CREATE TABLE mytable (id int, title char(20)) ENGINE = INNODB

修改表的存儲引擎:

ALTER TABLE engineTest ENGINE = INNODB;

修改默認存儲引擎:

在mysql配置文件(linux下爲/etc/my.cnf),在mysqld後面增加default-storage-engine=INNODB即可。

但是如果表建立的時候是MyISAM,要更改整個數據庫表的存儲引擎,一般要一個表一個表的修改,比較繁瑣,可以採用先把數據庫導出,得到SQL,把MyISAM修改成INNODB,再導入的方式。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章