mariadb or mysql
用戶端程式;
mysql:交換式工具
mysqldump:備份工具
mysqladmin:基于mysql協定管理mysqld
mysqlimprot:資料導入工具;
非用戶端類的管理工具:
myisamchk,myisampack
如何擷取程式預設使用的配置;
mysql --print-defaults
mysqld --print-defaults
用戶端使用的選項:
-u:user
-h:host
-p:password
-P:port
--protocol={tcp|sock}
-S:socket
-D:database
-C:--compress
mysql -e “sql”:不進入互動式模式直接運作sql
mysql -e "show databases;"
mysql的使用模式:
交換模式:
用戶端指令:\h,help
伺服器端指令:sql;
腳本模式:
方法一:mysql -uroot -h127.0.0.1 -p123456 < /tmp/test.sql
例如:mysql -uroot -h127.0.0.1 -P3306 -p123456 -Dmysql </tmp/test.sql
方法二:mysql> source /tmp/test.sql
伺服器端:
擷取可用參數清單:
mysqld --verbose --help | more
擷取運作中的mysql程序的伺服器參數:
mysql>show global variables;
mysql>show session variables;
注意:其中有些參數支援運作時修改,立即生效,有些不支援,需要通過修改配置檔案
并重新開機伺服器程式生效;
修改伺服器變量的值:
mysql>help set
全局:
set global system_var_name=value;
set @@global.system_var_name=value;
會話:
set [session] system_var_name=value;
set @@[session.]system_var_name=value;
狀态變量:用于儲存mysqld運作中的統計資料的變量。
msyql>show global status;
msyql>show session status;
mysql資料類型:
字元型、數值型、日期時間型、内建類型
字元型:
CHAR ,BINARY:定長資料類型
VARCHAR,VARBINARY:變成資料類型;需要結束符;
TEXT:TINYTEXT,TEXT,MEDIUMTEXT,LONGTEXT
BLOB:TINYBLOB,BLOB,MEDIUMBLOB,LONGBLOB
EUNM,SET
數值型:
精确數值型:
整形:TINYINT,SMALLINT,MEDIUMINT,INT,BIGINT
十進制型:DECIMAL,NUMERIC
近似數值型
浮點型:FLOAT
DOUBLE
BIT
日期時間型:
DATA
TIME
DATATIME
TIMESTAMP
修飾符:
NOT NULL:非空限制
NULL:
DEFAULT 'STRING':指明預設值
CHARACTER SET '':字元集
COLLATION:使用的排序規則
mysql>show character set;
mysql>show collation;
AUTO_INCREMENT:
UNSIGNED
PRIMARY KEY|UNIQUE KEY
NOT NULL
mysql>select LAST_INSERT_ID();
sql_mode定義限制規則:
set global sql_mode='TRADITIONAL';
常用mode:TRADITIONAL,STRICT_TRANS_TABLES,or STRICT_ALL_TABLES
檢視警告:
show warning
檢視表狀态:
show table status like 'table'\G;
mysql資料檔案類型:
資料檔案,索引檔案
重做日志,撤銷日志,二進制日志、錯誤日志、查詢日志、慢查詢日志、中繼日志
建立索引:
alter table test add index(age);
create index index_name on test (name);
檢視索引:
show indexs from test;
檢視執行計劃:
explain select * from test where id=1\G
忘記管理者密碼的解決辦法;
1.在/etc/my.cnf中加入 skip-grant-tables
2.啟動mysqld服務使用update修改管理者密碼:update user set password=password('123456') where user='root';
3.重新開機mysqld
查詢緩存:
通過查詢語句哈希判斷:哈希值考慮的因素包括
查詢本身,要查詢的資料庫,用戶端使用協定版本,。。
查詢語句任何字元不同,都會導緻緩存不能命中
不會被緩存:
查詢中包含UDF,存儲函數、使用者自定義變量、臨時表、系統表、或者包含列級權限的表、有着不确定值得函數:now();
緩存相關變量:
show global variables like '%quer%';
query_cache_min_res_unit:查詢緩存中記憶體塊的最小配置設定機關;預設4k
query_cache_limit:能緩存的最大查詢結果;
對于有着較大結果的查詢語句,建議在select中使用sql_no_cache
query_cache_size:查詢緩存總共可用的記憶體空間,機關位元組,必須是1024的整數倍
query_cache_type:ON,OFF,DEMAND
query_cache_wlock_invalidate:如果某個表被其他的連接配接鎖定,是否仍然可以從查詢緩存中傳回結果;預設值為OFF,表示可以傳回。ON表示不允許傳回。
查詢相關的鑽拖變量
mysql> show global status like 'Qcache%';
+-------------------------+-------+
| Variable_name | Value |
| Qcache_free_blocks | 0 |
| Qcache_free_memory | 0 |
| Qcache_hits | 0 |
| Qcache_inserts | 0 |
| Qcache_lowmem_prunes | 0 |
| Qcache_not_cached | 0 |
| Qcache_queries_in_cache | 0 |
| Qcache_total_blocks | 0 |
緩存命中率:Qcache_hits/(Qcache_hits+Com_select)
mysql的存儲引擎;
create table xx(
....
) engine=myisam (指定存儲引擎)
show create table xx;
檢視預設存儲引擎:
show variables like '%storage_engine%';
檢視mysql可以提供的存儲引擎
show engines
修改表的存儲引擎;ALTER TABLE my_table ENGINE=InnoDB
InnoDB:處理大量的短期事務:資料存儲于“表空間(table space)”中
(1)所有表的資料和索引放到一個表空間中
表空間檔案:datadir定義的目錄下
ibddata1,ibdata2,...
(2)每個表單獨使用一個表空間存儲表的資料和索引;
innodb_file_per_table=on
資料檔案:tbl_name.ibd,tbl_name.frm
Mariadb(xtradb)
并發:MVCC,間隙鎖
索引:聚集索引、輔助索引
性能:支援“自适應hash索引”、插入緩存區、預計操作
備份:支援熱備
MyISAM:
支援全文索引、壓縮、空間函數;不支援事務,不支援行級鎖
崩潰後無法完全恢複
适用場景:隻讀(或者寫較少)、表較小(可以接受長時間的修複操作)
Aria:crash-safe
檔案:tbl_name.frm:表格式定義
tbl_name.MYD:資料檔案
tbl_name.MYI:索引檔案
特性:
加鎖和并發:表級鎖
修複:手工或自動修複:但可能丢失資料
索引:非聚集索引
延遲更新索引鍵;
支援壓縮表
其他存儲引擎:
CSV:将普通的CSV(字段通過逗哥分隔)作為mysql表使用
MRG_MYISAM:将多個MyISAM表合并成一個虛拟表;
BLANKHOLE:類似于/dev/null,不存儲任何資料
MEMORY:所有資料儲存于記憶體中,記憶體表;支援hash索引;表級鎖
本文轉自阿倫艾弗森 51CTO部落格,原文連結:http://blog.51cto.com/perper/2053013,如需轉載請自行聯系原作者