程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> MYSQL數據庫 >> 關於MYSQL數據庫 >> mysql修改默認字符和默認存儲引擎

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

編輯:關於MYSQL數據庫

>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,再導入的方式。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved