隔離級別
1 隔離級別 臟讀(Dirty Read) 不可重復讀(NonRepeatable Read) 幻讀(Phantom Read)
2 讀未提交(Read uncommitted) 可能 可能 可能
3 讀已提交(Read committed) 不可能 可能 可能
4 可重復讀(Repeatable read) 不可能 不可能 可能
5 可串行化(Serializable ) 不可能 不可能 不可能
MySQL 事務
- Mysql 默認提交數據的 AUTOCOMMIT ON
- InnoDB 行級別鎖 多版本并發控制,NDB Cluster Falcon 是事務型 MyISAM 是非事務的 表級別鎖,在混合事務的時候不能保證數據一致性
- InnoDB 使用二相鎖定協議 一個事務在執行的時候會獲得鎖,在commit 或者rollback的時候釋放鎖,可以顯示制定鎖 例如 LOCK IN SHARE MODE ,FOR UPDATE
查看 表的狀態
show table status like '表名'
MyISAM MySQL 默認的數據庫引擎 不支持事務和行級鎖
表轉換
alter table方式 alter table mytable engine = innoDB; 復制表
打開MySql慢查詢日志
修改my.conf
#打開慢查詢
log-slow-queries = <file_name>
#記錄查詢大于2秒的記錄, 默認是10秒
long_query_time = 2
#記錄沒有使用索引的查詢
log-queries-not-using-indexes
#記錄運行較慢的管理命令
log-slow-admin-statements
- 取查看MySql 數據庫狀態 show status show processlist
- FLUSH STATUS 刷新狀態
- SQL_NO_CACHE MySql 不會緩存結果 例如 select sql_no_cache * from admin_user
- show profile cpu for query 1 ; 查看用戶查詢CPU使用率
選擇優化的數據類型- 更小通常更好,正確的存儲和表示數據的最小類型,更小的數據類型通常更快,更少的使用存儲空間 內存和CPU緩存
- 簡單就好 越簡單的數據類型需要的CPU周期越少
- 盡量避免NULL
- 整數 數據類型包括 TINYINT(8) SMALLINT(16) MEDIUMINT(24) INT(32) BIGINT(64),所有類型都包含UNSIGNED熟悉 ,表示不允許為負數,并且正數上限提高一倍
- 實數FLOAT(4) DOUBLE(8) 保存精確的小數 DECIMAL可以定義精度 比如DECIMAL(8,2)會在小數點前保留6位,后2位
- 字符串類型p66
posted on 2012-05-27 21:14
巖石 閱讀(265)
評論(0) 編輯 收藏