在MySQL中,可以使用函數PROCEDUREANALYSE()對當前應用的表進行分析,改函數可以對數據表中列的數據類型提出優化建議,用戶可以根據應用的實際情況酌情考慮是否實施
mysql> select * from duck_cust procedure analyse()\G
*************************** 1. row ***************************
Field_name: sakila.duch_cust.cust_num
Min_value: 1
Max_value: 6
Min_length: 1
Max_length: 1
Empties_or_zeros: 0
Nulls: 0
Avg_value_or_avg_length: 3.5000
Std: 1.7078
Optimal_fieldtype: ENUM(‘1’,‘2’,‘3’,‘4’) NOT
NULL
*************************** 2. row ***************************
… …
1.分庫分表
2.分區
主要目的:
1.減少表的記錄數
2.減小對操作系統的負擔壓力
1.lock table t1 read
2.開啟另一個mysql連接終端,接著去嘗試:
select * from t1
3.再insert、update和delete t1這張表,你會發現所有的數據都停留在終端上沒有真正的去操作
4.讀鎖定對我們在做備份大量數據時非常有用.
mysqldump -uroot -p123 test >test.sql
1.lock table t1 write
2.打開另一個mysql終端,嘗試去select、insert、update和delete這張表t1,你會發現都不能操作,都會停留在終端上,只有等第一個終端操作完畢,第二個終端才能真正執行.
3.可見表的寫鎖定比讀鎖定更嚴格
4.一般情況下我們很少去顯式的去對表進行read和write鎖定的,myisam會自動進行鎖定的.
1.有關慢查詢
開戶和設置慢查詢時間:
vi /etc/my.cnf
log_slow_queries=slow.log
long_query_time=5