天天看點

mysql常用指令與存儲引擎

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,如需轉載請自行聯系原作者