一,SELECT...FOR UPDATE 行鎖/表鎖
SELECT * FROM tableName WHERE id=$id FOR UPDATE
由於InnoDB 預設是Row-Level Lock,所以只有「明確」的指定主鍵,mysql 才會執行row lock (只鎖住被選取的數據) ,否則mysql 將會執行Table Lock (將整個數據表單給鎖住)。
二,LOCK IN SHARE MODE
三,將兩條SQL合成一條
sql1:
ALTER TABLE `gugu_club_notice` MODIFY `target_id` BIGINT(18) UNSIGNED NOT NULL DEFAULT '0' COMMENT '跳轉的目標ID';
sql2:
ALTER TABLE `gugu_club_notice` ADD `notice_type` TINYINT(1) UNSIGNED NOT NULL DEFAULT '0' COMMENT '消息類型' AFTER `content`;
合成:(加逗號連接+去掉重複的命令頭)
ALTER TABLE `gugu_club_notice` MODIFY `target_id` BIGINT(18) UNSIGNED NOT NULL DEFAULT '0' COMMENT '跳轉的目標ID',ADD `notice_type` TINYINT(1) UNSIGNED NOT NULL DEFAULT '0' COMMENT '消息類型' AFTER `content`;
四,EXPLAIN
EXPLAIN + SQL
檢測sql是否用到索引
// - - - - - - - - - -
問題一:phpstudy的mysql無法啟動
解決方法:
刪除mysql/data/ib_logfile0
刪除mysql/data/ib_logfile1
刪除mysql/data/ibdata1
刪除mysql/data/xxxx-PC.pid
即可
問題二:服務啟動後,無法登入