6. MySQL常見的函數?
聚合函數:
AVG(col)返回指定列的平均值
COUNT(col)返回指定列中非NULL值的個數
MIN(col)返回指定列的最小值
MAX(col)返回指定列的最大值
SUM(col)返回指定列的所有值之和
GROUP_CONCAT(col) 返回由屬於一組的列值連接組合而成的結果
數學函數:
ABS(x) 返回x的絕對值
BIN(x) 返回x的二進制(OCT返回八進制,HEX返回十六進制)
7. 如何開啟慢日志查詢?
1 執行 SHOW VARIABLES LIKE “%slow%”,獲知 mysql 是否開啟慢查詢 slow_query_log 慢查詢開啟狀態 OFF 未開啟 ON 為開啟 slow_query_log_file 慢查詢日志存放的位置(這個目錄需要MySQL的運行帳號的可寫權限,一般設置為MySQL的數據存放目錄)
2 修改配置文件( 放在[mysqld]下),重啟 long_query_time 查詢超過多少秒才記錄
3 測試是否成功
4 慢查詢日志文件的信息格式
8. 數據庫導入導出命令(結構+數據)?
1.導出整個數據庫
mysqldump -u用戶名 -p密碼 數據庫名 > 導出的文件名
例如:C:\Users\jack> mysqldump -uroot -pmysql sva_rec > e:\sva_rec.sql
2.導出一個表,包括表結構和數據
mysqldump -u用戶名 -p 密碼 數據庫名 表名> 導出的文件名
例如:C:\Users\jack> mysqldump -uroot -pmysql sva_rec date_rec_drv> e:\date_rec_drv.sql
3.導出一個數據庫結構
例如:C:\Users\jack> mysqldump -uroot -pmysql -d sva_rec > e:\sva_rec.sql
4.導出一個表,只有表結構
mysqldump -u用戶名 -p 密碼 -d數據庫名 表名> 導出的文件名
例如:C:\Users\jack> mysqldump -uroot -pmysql -d sva_rec date_rec_drv> e:\date_rec_drv.sql
5.導入數據庫
常用source 命令
進入mysql數據庫控制台,
如mysql -u root -p mysql>use 數據庫
然后使用source命令,后面參數為腳本文件(如這里用到的.sql)
mysql>source d:wcnc_db.sql
9. 數據庫怎么優化查詢效率?
1、儲存引擎選擇:如果數據表需要事務處理,應該考慮使用InnoDB,因為它完全符合ACID特性。
如果不需要事務處理,使用默認存儲引擎MyISAM是比較明智的
2、分表分庫,主從。
3、對查詢進行優化,要盡量避免全表掃描,首先應考慮在 where 及 order by 涉及的列上建立索引
4、應盡量避免在 where 子句中對字段進行 null 值判斷,否則將導致引擎放棄使用索引而進行全表掃描
5、應盡量避免在 where 子句中使用 != 或 <> 操作符,否則將引擎放棄使用索引而進行全表掃描
6、應盡量避免在 where 子句中使用 or 來連接條件,如果一個字段有索引,一個字段沒有索引,將導致引擎放棄使用索引而進行全表掃描
7、Update 語句,如果只更改1、2個字段,不要Update全部字段,否則頻繁調用會引起明顯的性能消耗,同時帶來大量日志
8、對於多張大數據量(這里幾百條就算大了)的表JOIN,要先分頁再JOIN,否則邏輯讀會很高,性能很差。
10. Mysql集群的優缺點?
優點:
- 99.999%的高可用性
- 快速的自動失效切換
- 靈活的分布式體系結構,沒有單點故障
- 高吞吐量和低延遲
- 可擴展性強,支持在線擴容
缺點: - 存在很多限制,比如:不支持外鍵
- 部署、管理、配置很復雜
- 占用磁盤空間大、內存大
- 備份和恢復不方便
- 重啟的時候,數據節點將數據load到內存需要很長的時間