MySQL高級特性

MySQL管理

用戶管理

CREATE USER username IDENTIFIED BY 'password';  新建用戶
CREATE USER@’%’ IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES ON *.* TO username@'%';  賦予對應的權限
FLUSH PRIVILEGES;

新建用戶以後可使用以下命令來刪除用戶:mysql

DROP USER username;  刪除用戶
DELETE FROM user where User='username';  刪除用戶,須要首先use mysql

grant語句賦予用戶相應的權限,通俗的講,grant至關於如下sql語句:sql

grant priv_set on dbname to username;

如何查看用戶的相應權限呢?數據庫

SHOW GRANTS FOR username;

如何撤銷用戶對應的權限?安全

REVOKE ALL PRIVILEGES ON dbname.table FROM username;
REVOKE INSERT ON dbname.table FROM username; 撤銷建立表權限

用戶管理更新事後請使用FLUSH PRIVILEGES,不然可能會出現ERROR 1396錯誤。併發

 

表數據複製

利用select能夠實現表結構與數據的同步複製。性能

CREATE TABLE tablename SELECT * FROM oldtablename;
CREATE TABLE tablename SELECT * FROM oldtablename where id < 10;
CREATE TABLE tablename LIKE oldtablename; 利用linke語句也能夠實現表的複製

 

數據庫備份與恢復

數據庫的導出:spa

mysqldump -h x.x.x.x -u root database > backup.sql -p;  輸入數據密碼後數據庫導出到backup.sql文件中
mysql -h x.x.x.x -u root database < backup.sql -p; 執行數據恢復操做

執行數據庫的恢復操做時database必須存在,不然恢復數據時找不到對應的數據庫。設計

利用source命令,也能夠執行數據恢復操做:code

mysql> use xxx;
mysql> source backup.sql

 

MySQL的存儲引擎

存儲引擎就是表的類型,MySQL有多種存儲引擎,不一樣的存儲引擎有不一樣的存儲機制、索引技術和鎖定水平。blog

MySQL存儲引擎分爲事務安全表的引擎和非事務安全表的引擎,事務是數據庫中一個重要概念,事務具備原子性、一致性、隔離性和持久性4中特性。事務是爲了保護數據的安全性,防止數據庫出現故障而致使數據庫中數據不一致。事務安全表可使用COMMIT語句合併多條語句,適合須要常常更新的表;非事務安全表因爲沒有事務支持,處理速度較快,存儲時佔用內存較小,數據表執行更新佔用內存少。

MyISAM引擎

MyISAM適合讀操做次數遠大於寫操做的數據庫,不支持事務操做,因爲不須要處理事務記錄,其佔用內存較小,查詢效率較高。每一個MyISAM表對應兩個磁盤文件:一個是用於存儲數據的數據文件,其相對路徑爲dbname/tablename.MYD;另外一個是存儲索引的索引文件,其相對路徑爲dbname/tablename.MYI。

InnoDB引擎

InnoDB是MySQL的默認存儲引擎,InnoDB引擎管理事務安全表,使用多版本併發控制和行級鎖來提供對事務的支持,除了提供事務支持外,InnoDB還支持外鍵約束,擁有故障恢復能力。InnoDB設計目標是以最大的效率處理海量數據,其CPU利用率是基於全部磁盤的關係數據庫引擎中最高的,所以,InnoDB引擎很是適合支持事務且併發讀寫頻率較高的數據庫。

InnoDB和MyISAM對比

InnoDB和MyISAM是MySQL中最經常使用的兩個存儲引擎,這兩個存儲引擎各有優劣,對存儲引擎的選擇應該根據具體應用來選擇,只有這樣才能最大限度發揮MySQL數據庫的性能優點。

InnoDB和MyISAM區別總結以下:

  • MyISAM不支持事務處理和外鍵約束等高級處理,而InnoDB存儲引擎支持
  • MyISAM強調的是性能,其執行速度比InnoDB更快,而InnoDB存儲引擎則強調的是數據安全性。
  • MyISAM支持表級鎖定,而InnoDB支持行級鎖定。
  • MyISAM支持全文索引,而InnoDB不支持。
相關文章
相關標籤/搜索