Category: MySQL Optimization
The customer reported today that one of our services stopped working, the new coming data can not be saved into the database. After checking the logs, there are a lot of “Hazelcast instance is...
当MySQL单表记录数过大时,增删改查性能都会急剧下降,可以参考以下步骤来优化:
当需要从数据库查询的表有上万条记录的时候,一次性查询所有结果会变得很慢,特别是随着数据量的增加特别明显,这时需要使用分页查询。 对于数据库分页查询,也有很多种方法和优化的点。下面简单说一下我知道的一些方法。
MySQL每秒50w+的写入,如何实现? innodb,它是我们建表的首选存储引擎 为什么 MySQL 索引要使用 B+树而不是其它树形结构?比如 B 树? 那么可以算出一棵高度为2的B+树,能存放1170*16=18720条这样的数据记录。根据同样的原理我们可以算出一个高度为3的B+树可以存放:1170*1170*16=21902400条这样的记录。 一款SQL自动检查神器,再也不用担心SQL出错了!Yearning 两类非常隐蔽的全表扫描,不能命中索引 第一类:“列类型”与“where值类型”不符,不能命中索引,会导致全表扫描(full table scan)。 第二类:相join的两个表的字符编码不同,不能命中索引,会导致笛卡尔积的循环计算(nested loop)。
1. 一、前言 基本上来说,大部分项目都需要跟数据库做交互,那么,数据库连接池的大小设置成多大合适呢? 一些开发老鸟可能还会告诉你:没关系,尽量设置的大些,比如设置成 200,这样数据库性能会高些,吞吐量也会大些! 你也许会点头称是,真的是这样吗?看完这篇文章,也许会颠覆你的认知哦!
1. 一 题记 最近公司项目添加新功能,上线后发现有些功能的列表查询时间很久。原因是新功能用到旧功能的接口,而这些旧接口的 SQL 查询语句关联5,6张表且编写不够规范,导致 MySQL 在执行 SQL 语句时索引失效,进行全表扫描。原本负责优化的同事有事请假回家,因此优化查询数据的问题落在笔者手中。笔者在查阅网上 SQL 优化的资料后成功解决了问题,在此从全局角度,记录和总结 MySQL 查询优化相关技巧。 2. 二、优化思路 数据查询慢,不代表 SQL 语句写法有问题。 首先,我们需要找到问题的源头才能“对症下药”。笔者用一张流程图展示 MySQL 优化的思路: 无需更多言语,从图中可以清楚地看出,导致数据查询慢的原因有多种,如:缓存失效,在此一段时间内由于高并发访问导致 MySQL 服务器崩溃;SQL 语句编写问题;MySQL 服务器参数问题;硬件配置限制 MySQL 服务性能问题等。 3. 三、查看 MySQL 服务器运行的状态值 如果系统的并发请求数不高,且查询速度慢,可以忽略该步骤直接进行...
在进行 MySQL 的优化之前必须要了解的就是 MySQL 的查询过程,很多的查询优化工作实际上就是遵循一些原则让 MySQL 的优化器能够按照预想的合理方式运行而已。
摘要: 一、需求 一个朋友接到一个需求,从大数据平台收到一个数据写入在20亿+,需要快速地加载到MySQL中,供第二天业务展示使用。 二、实现再分析 对于单表20亿, 在MySQL运维,说真的这块目前涉及得比较少,也基本没什么经验,但对于InnoDB单表Insert 如果内存大于数据情况下,可以维持在10万-15万行写入。
1. DBA的日常工作 首先,我们来看看DBA的具体工作,我觉得 DBA 真的很忙:备份和恢复、监控状态、集群搭建与扩容、数据迁移和高可用,这是我们 DBA 的功能。 了解这些功能以后要对体系结构有更加深入的了解,你不知道怎么处理这些故障和投诉的事情。 所以我们要去了解缓存/线程、SQL优化、存储引擎以及SQL审计以及锁与实务、体系结构更深一点,就去研究内核原理和源码定制,DBA有这么多工作,他们就像一个小怪兽一样等着我们去解决。 今天我站在更加全面的角度跟大家分享一下我觉得我在这一年多DBA工作当中的经验,希望可以给大家带来启发和帮助。
1. 引言 其实这个话题是老生常谈,很多人在工作中确实也不会使用外键。包括在阿里的JAVA规范中也有下面这一条 【强制】不得使用外键与级联,一切外键概念必须在应用层解决。 但是呢,询问他们原因,大多是这么回答的 每次做DELETE 或者UPDATE都必须考虑外键约束,会导致开发的时候很痛苦,测试数据极为不方便。 坦白说,这么说也是对的。但是呢,不够全面,所以开一文来详细说明。