最近公司獲取資產列表的接口奇慢無比,架構師給出如下解決辦法思路
- 把數據庫全緩存在redis中
- 給數據庫建索引index
- 存儲介質換成固態硬盤
- 抓取django查詢數據庫的sql語句。
其中從第四條開始著手的時候,遇到django使用django.core.serializer來序列化,無法抓取這部分的sql。于是從MySQL數據庫這端來抓取。打開MySQL引擎的配置文件(/etc/mysql/my.cnf
),把general_log_file= /var/log/mysql/mysql.log
和general_log=1
參數前面的注釋去掉,然后重啟數據庫服務(service mysql restart
)。查詢后進入 /var/log/mysql/mysql.log
查看語句。
最終原因找到,是切片工作沒有在序列化之前完成,導致每次序列化是進行全表掃描。