博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
数据库优化相关
阅读量:5278 次
发布时间:2019-06-14

本文共 830 字,大约阅读时间需要 2 分钟。

千万级表优化过程:

第一优化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

你可能感兴趣的文章
ANR和FC
查看>>
bzoj 2823: [AHOI2012]信号塔 最小圆覆盖
查看>>
CLRS最大子数组问题
查看>>
[Android 步步为营]第2营:Hello World 第一个Android应用(下)
查看>>
【转】ssh登录慢,等待输入密码时间长的解决办法
查看>>
冒泡选择插入三种排序
查看>>
外键建立失败
查看>>
font-face
查看>>
路飞学城Python-Day180
查看>>
操作系统实验报告五
查看>>
php 替换模板中的 PHP源码标签字符方法
查看>>
flask信号
查看>>
SQLAlchemy中scoped_session实现线程安全
查看>>
css在各浏览器中的兼容问题
查看>>
TEXTBOX的TextMode为MultiLine时,读取页面框体被撑大的解决方案!
查看>>
Performance comparison Raw device VS Ext2 VS Ext3 VS OCFS
查看>>
string[] 和 arraylist互转及问题解决
查看>>
Python os模块
查看>>
POJ 1226 Substrings
查看>>
HDU 3480 Division
查看>>