上次優化完之後,發現又有其他比較慢的地方,就需要再次優化。這次優化主要是加索引解決的。以及刪除了一大部分資料。優化的過程中遇到了很多問題,比如線上加索引,線上刪除資料之類的,盡量做成指令碼,晚上去更新。因為公司的服務是兩台伺服器,主從伺服器。修改了任何一台,另一條是會在sql執行完成之後,進行主從同步的。這樣會引發鎖表的情況。資料庫的指令碼寫法我是這樣做的。業務邏輯裡面也需要把熱資料給抽離出來,畢竟是乙個列表,每次查詢都到資料庫,如果請求量大的,伺服器是還是承受不住的,當然這一塊的業務邏輯比較難加,後面再加。
crontab -e
12 2 * * * ~/addindex.sh
addindex.sh的內容如下:
mysql -u root -p your_database < addindex.sql
addindex.
sql裡面的內容類似這樣:
alter
table tablename add
index shop_name(shop_id, name_id)
mysql如何檢視當前時間段特別慢的查詢?下面的是查詢5分鐘的情況。
select
*from information_schema.processlist where command !=
'sleep'
andtime
>
300order
bytime
desc
;
mysql優化記錄
一.建立索引 索引的分類 1.新增primary key 主鍵索引 alter tabletable nameadd primary key column 2.新增unique 唯一索引 alter tabletable nameadd unique column 3.新增index 普通索引 寫法...
mysql使用優化記錄
使用in語句,in的列表明確並且有限時,可以使用。因為此時搜尋引擎會使用索引,但in的是乙個查詢結果時,索引將會沒有作用,會查詢全表。例子 使用in查詢時,in的列表有限且明確 select from on auction where pid in 10,11,20 此時的執行計畫,會使用建立在pi...
mysql反查優化記錄
id name source 1客戶1 a渠道2 客戶1b渠道 3客戶2 a渠道4 客戶3a渠道 5客戶1 c渠道我現在的邏輯是根據傳進來的id查詢name,然後再根據name來查詢id 例如 傳進來id是1和3,根據這兩個id查到name值為客戶1和客戶2,然後根據這兩個name去查詢id,可得到...