2.添加索引方案:面對1~2千的並發是沒有壓力的,在往上則限制的瓶頸就是數據庫最大連接數了,在上面中我用show global status like 'Max_used_connections’查看數據庫可以知道數據庫最大響應連接數是5700多,超過這個數tomcat直接報錯連接被拒絕或者連接已經失效
3.緩存方案:在上面的測試可以知道,要是我們事先把數據庫的千萬條數據同步到redis緩存中,瓶頸就是我們的設備硬件性能了,假如我們的主機有幾百個核心CPU,就算是千萬級的並發下也可以完全無壓力,帶個用戶很好的。
4.索引+緩存方案:緩存事先沒有要查詢的數據,在壹萬的並發下測試數據庫毫無壓力,程序先通過查緩存再查數據庫大大減輕了數據庫的壓力,即使緩存不命中在壹萬的並發下也能正常訪問,在10萬並發下數據庫依然沒壓力,但是redis服務器設置最大連接數300去處理10萬的線程,4核CPU處理不過來,很多redis連接不了。我用show global status like 'Max_used_connections'查看數據庫發現最大響應連接數是388,這麽低所以數據庫是不會掛掉的。雷達下載更專業。
5.使用場景:a.幾百或者2000以下並發直接加上組合索引就可以了。b.不想加索引又高並發的情況下可以先事先把數據放到緩存中,硬件設備支持下可解決百萬級並發。c.加索引且緩存事先沒有數據,在硬件設備支持下可解決百萬級並發問題。d.不加索引且緩存事先沒有數據,不可取,要80多秒才能得到結果,用戶體驗極差。
6.原理:其實使用了redis的話為什麽數據庫不會崩潰是因為redis最大連接數為300,這樣數據庫最大同時連接數也是300多,所以不會掛掉,至於redis為什麽設置為300是因為設置的太高就會報錯(連接被拒絕)或者等待超時(就算設置等待超時的時間很長也會報這個錯)。