![]() ![]() ![]() ![]() |
|||||
|
|||||
樓主 迷路 ![]()
![]() ![]() |
4核+16G+固態硬碟,主機的效能應該是很夠的 客戶自己架設的購物網站,原工程師離職後找我上班的公司接手維護網站 客戶反應資料有問題 檢查後發現資料表沒有建立主鍵以外的索引 找了舊的備份比對,該資料表應該還有索引才對 該資料表有25萬筆資料,157mb大小 我加上一個由流水號主鍵(int(11))和文字欄位(varchar(32))組成的唯一索引 phpmyadmin跑了一下回應502 bad gateway 這時資料庫還能運行,但是速度很明顯變慢 過了幾分鐘後,資料庫就整個沒有回應了 請負責維護主機的工程師重啟資料庫,他說無法重啟 後來只好請主機商重啟主機,然後又花了一個半小時才終於讓網站重新上線 我想請問的問題是 對已經有資料的資料表建立索引會這麼吃資源嗎? 有其它較安全平穩的方式建立索引嗎?(我只會在phpmyadmin操作) 另外,資料表的索引有可能平白無故消失嗎? |
1樓
最有價值解答
浩瀚星空 ![]() ![]() |
1.如果是超過百萬級的資料表,建立索引是很操的事沒錯。
2.資料表索引的確有機會會消失。一般來說可能是在轉移資料的情況下, 或是不正常斷電,或是儲值設備有問題的情況下才會發生 一般像這種的系統。我推測其設定並沒設定到很好才會發生這樣的事。 一般來說像你這樣25萬筆的來說,因該還不至於發生負載不了的情況發生。 我就只能推測是因為系統設定上的問題。造成無法發揮其主機100%的能力。 才會造成這樣的事。 你可以用另一個方式來試試。 先建立一個空的一樣結構的資料表。並將其索引事先建立好。 再用phpmyadmin的資料copy動作(只做資料轉移,不要重建表) 再將資料轉過去。 安全點最好還是用命令。 一般會碰上索引建立會掛掉的情況下。我大多會用這一招。
本篇文章回覆於2017-11-16 11:12
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔-- |
2樓 |
我記得你不是有我的line???
技術上的問題可以用line直接問我會比較快
本篇文章回覆於2017-11-16 11:15
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔-- |
回覆 |
如要回應,請先登入. |