数据库优化相关
千萬級表優化過程:
第一優化sql語句和索引
第二利用緩存,memcached,redis;
第三以上都做了后,還是慢,就做主從復制或主主復制,讀寫分離,可以在應用層做,效率高,也可以用三方工具,第三方工具推薦360的atlas,其它的要么效率不高,要么沒人維護;
第四如果以上都做了還是慢,不要想著去做切分,mysql自帶分區表,先試試這個,對你的應用是透明的,無需更改代碼,但是sql語句是需要針對分區表做優化的,sql條件中要帶上分區條件的列,從而使查詢定位到少量的分區上,否則就會掃描全部分區,另外分區表還有一些坑,在這里就不多說了;
第五如果以上都做了,那就先做垂直拆分,其實就是根據你模塊的耦合度,將一個大的系統分為多個小的系統,也就是分布式系統;
第六才是水平切分,針對數據量大的表,這一步最麻煩,最能考驗技術水平,要選擇一個合理的sharding key,為了有好的查詢效率,表結構也要改動,做一定的冗余,應用也要改,sql中盡量帶sharding key,將數據定位到限定的表上去查,而不是掃描全部的表; [原文]:https://www.zhihu.com/question/19719997 mysql刪表去除外鍵關系 SELECT concat('DROP TABLE IF EXISTS ', table_name, ';')FROM information_schema.tables
WHERE table_schema = 'springcloud_cgm'; SET FOREIGN_KEY_CHECKS = 0;
DROP TABLE IF EXISTS budget_attribute;
DROP TABLE IF EXISTS budget_item;
SET FOREIGN_KEY_CHECKS = 1;
轉載于:https://www.cnblogs.com/yincan2014/p/7404115.html
總結
- 上一篇: Linux下RabbitMQ服务器搭建
- 下一篇: mysqldump 和 sql命令导入