php記憶體消耗和,高並發處理,php排序。

來源:互聯網
上載者:User
做了一個sql查詢,還通過了擷取的數組下標來排序。但是前輩說會有大量訪問的時候這樣很消耗記憶體,網上看了下好多說的方法是做cache,有沒有其他的方法處理呢?


回複討論(解決方案)

你的語句,不會很消耗記憶體。activeNum是索引就可以了。
當然有cache是最好的。

你的語句,不會很消耗記憶體。activeNum是索引就可以了。
當然有cache是最好的。


要是有幾十萬上百萬的資料,每次有人訪問index就去取一次不會消耗資源嗎?
如果加索引的話,加什麼索引好呢?這個欄位是隨時變化的


你的語句,不會很消耗記憶體。activeNum是索引就可以了。
當然有cache是最好的。


要是有幾十萬上百萬的資料,每次有人訪問index就去取一次不會消耗資源嗎?
如果加索引的話,加什麼索引好呢?這個欄位是隨時變化的



如果資料值是唯一的 就加唯一索引 否則加普通索引
如果mysql表資料多 幾百萬的時候 那需要考慮分表

1、沒看到 數組下標來排序 的代碼
2、activeNum 上應有索引(普通索引即可)
3、你知道訪問資料庫和訪問 cache 的區別嗎?
將資料庫的壓力轉嫁到 cache 就一定合適嗎?
如果有有幾十萬上百萬的資料,那麼你的 cache 策略是什嗎?

1、沒看到 數組下標來排序 的代碼
2、activeNum 上應有索引(普通索引即可)
3、你知道訪問資料庫和訪問 cache 的區別嗎?
將資料庫的壓力轉嫁到 cache 就一定合適嗎?
如果有有幾十萬上百萬的資料,那麼你的 cache 策略是什嗎?



activeNum 是數字型,用索引也有效嗎?一直以為 索引只用在where作用的欄位上,排序的欄位也可以用索引嗎

排序也可以用到索引,不然資料量很大,不適用索引,你資料庫不是崩潰。

1、沒看到 數組下標來排序 的代碼
2、activeNum 上應有索引(普通索引即可)
3、你知道訪問資料庫和訪問 cache 的區別嗎?
將資料庫的壓力轉嫁到 cache 就一定合適嗎?
如果有有幾十萬上百萬的資料,那麼你的 cache 策略是什嗎?


目前 activeNum這個欄位沒有加索引。

EXPLAIN 你的查詢指令

MySQL 會給你有益的建議!而不是自己想當然的說

EXPLAIN 你的查詢指令

MySQL 會給你有益的建議!而不是自己想當然的說



用命令查出來貌似不能用索引,我現在想到的一個辦法是,建立一個rank表把使用者的id,排名根據數組取下標放到rank表裡面,然後在新表裡面加一個uid等於0的欄位,排名那裡放我寫入進去的時間,每次來取排名的時候先取uid=0的時間,對比目前時間,如果大於30分鐘,那麼就重新去active表讀取一次排名放到rank表裡面。不知道這方法可行嗎?

possible_key 是可被使用的索引,由於你沒有對 activeNum 做索引,自然就沒有啦
於是 Extra 列就有了 filesort,表示用了一個臨時檔案來對 activeNum 進行排序

possible_key 是可被使用的索引,由於你沒有對 activeNum 做索引,自然就沒有啦
於是 Extra 列就有了 filesort,表示用了一個臨時檔案來對 activeNum 進行排序


好吧,我再搗鼓搗鼓,php在linux裡面有沒有區分是否安全執行緒呢?每個使用者訪問一次比如我寫了一個DB調用資料庫,是只引用一次,所有使用者都用的這一個,還是每個人都是獨立的呢?

每個人都是獨立的

你可以試試 單例模式, 把結果存在靜態變數中試試

如果查詢的量非常大,而資料又不是即時的可以做緩衝來處理.但是如果資料又要是即時的 我覺得先找出瓶頸在什麼地方,普通的索引等最佳化這些都是基礎。

謝謝大家,用暫存資料表做緩衝解決了。

  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.