正文内容加载中...
posted @ 2020-12-07 21:57 陈小兵 阅读(80) 评论(0) 推荐(0) 编辑
摘要:收藏大牛优化实践分析 来源:月光中的污点 www.extlight.com/2017/10/07/MySQL-性能优化技巧/ 一、题记 最近公司项目添加新功能,上线后发现有些功能的列表查询时间很久。原因是新功能用到旧功能的接口,而这些旧接口的 SQL 查询语句关联5,6张表且编写不够规范,导致 My 阅读全文
posted @ 2020-05-02 21:38 陈小兵 阅读(107) 评论(0) 推荐(0) 编辑
摘要:1. 案例:一条慢SQL拖死整个系统 某天突然发现服务探测接口疯狂告警、同时数据库CPU消耗也告警,最后系统都无法访问; 起先以为服务出现问题,服务重启后现象依旧; 后检查数据库发现,大量的慢SQL正在阻塞等待执行: 查看哪些表被锁:show OPEN TABLES where In_use > 0 阅读全文
posted @ 2020-05-02 21:36 陈小兵 阅读(579) 评论(0) 推荐(0) 编辑
摘要:1. 数据存储 超大文本,或者图片、视频等二进制文件避免直接存储在数据库。 2.数据访问 减少数据库访问;实时性要求不高、不常变化的数据;通过cache提示系统性能,减少数据库压力。 减少无用数据的查询。 3.硬件影响 并发量高,但每次访问数据量小,对CPU处理能力、核数要求比较高。 并发量低,但是 阅读全文
posted @ 2020-05-02 21:34 陈小兵 阅读(71) 评论(0) 推荐(0) 编辑
摘要:索引一般以文件形式存储在磁盘上,索引检索需要磁盘I/O操作,为了尽量减少磁盘I/O。磁盘往往不是严格按需读取,而是每次都会预读,而且主存和磁盘以页为单位交换数据,所以在读取的数据不在主存中时,会从磁盘中读取一批数据(页)到主存中。 因此,要快速挺高性能,直接将常用的、少变更的数据直接读取到内存中,使 阅读全文
posted @ 2020-05-02 21:33 陈小兵 阅读(80) 评论(0) 推荐(0) 编辑
摘要:1、SQL语句中IN包含的值不应过多 IN中如果数值较多,产生的消耗会比较大的。再例如:select id from t where num in(1,2,3) 对于连续的数值,能用 between 就不要用 in 了;再或者使用连接来替换。 2、SELECT语句务必指明字段名称 SELECT *增 阅读全文
posted @ 2020-05-02 21:32 陈小兵 阅读(83) 评论(0) 推荐(0) 编辑
摘要:一、按算法、结构分: 1.BTREE索引就是一种将索引值按一定的算法,存入一个树形的数据结构中,如二叉树一样,每次查询都是从树的入口root开始,依次遍历node,获取leaf. 通常说的索引,多指BTREE 2.位图索引:位图索引适合只有几个固定值的列,基数值比较小的列;比如boolean类型的列 阅读全文
posted @ 2020-05-02 21:29 陈小兵 阅读(92) 评论(0) 推荐(0) 编辑
摘要:1.Explain简介 获取 select 语句的执行计划,通过 explain 我们可以知道:表的读取顺序,数据读取操作的类型,哪些索引可以使用,哪些索引实际使用了,表之间的引用,每张表有多少行被优化器查询等信息。 样例: 在 select 语句之前增加 explain 关键字,执行查询时,会返回 阅读全文
posted @ 2020-05-02 14:12 陈小兵 阅读(138) 评论(0) 推荐(0) 编辑
摘要:相同: 1、LinkedBlockingQueue和ArrayBlockingQueue都实现了BlockingQueue接口; 2、LinkedBlockingQueue和ArrayBlockingQueue都是可阻塞的队列(内部都是使用ReentrantLock和Condition来保证生产和消 阅读全文
posted @ 2020-05-02 14:10 陈小兵 阅读(520) 评论(1) 推荐(1) 编辑
摘要:最近项目中引入了阿里的规范插件,扫描发现之前创建线程池的方式有问题. 比如:Executors.newFixedThreadPool(poolSize) 和 Executors.newCachedThreadPool(); 线程池不允许使用Executors去创建,而是通过ThreadPoolExe 阅读全文
posted @ 2020-05-02 14:06 陈小兵 阅读(113) 评论(0) 推荐(0) 编辑