假如mysql数据库单表有100W行记录,有哪些方式加快查询速度
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了假如mysql数据库单表有100W行记录,有哪些方式加快查询速度相关的知识,希望对你有一定的参考价值。
添加索引或者使用工具,比如Apache Spark先安装 Apache Spark,查询数据库的速度可以提升10倍。
在已有的 mysql 服务器之上使用 Apache Spark (无需将数据导出到 Spark 或者 Hadoop 平台上),这样至少可以提升 10 倍的查询性能。使用多个 MySQL 服务器(复制或者 Percona XtraDB Cluster)可以让我们在某些查询上得到额外的性能提升。你也可以使用 Spark 的缓存功能来缓存整个 MySQL 查询结果表。
思路很简单:Spark 可以通过 JDBC 读取 MySQL 上的数据,也可以执行 SQL 查询,因此我们可以直接连接到 MySQL 并执行查询。那么为什么速度会快呢?对一些需要运行很长时间的查询(如报表或者BI),由于 Spark 是一个大规模并行系统,因此查询会非常的快。MySQL 只能为每一个查询分配一个 CPU 核来处理,而 Spark 可以使用所有集群节点的所有核。在下面的例子中,我们会在 Spark 中执行 MySQL 查询,这个查询速度比直接在 MySQL 上执行速度要快 5 到 10 倍。
另外,Spark 可以增加“集群”级别的并行机制,在使用 MySQL 复制或者 Percona XtraDB Cluster 的情况下,Spark 可以把查询变成一组更小的查询(有点像使用了分区表时可以在每个分区都执行一个查询),然后在多个 Percona XtraDB Cluster 节点的多个从服务器上并行的执行这些小查询。最后它会使用map/reduce 方式将每个节点返回的结果聚合在一起形成完整的结果。 参考技术A 假如mysql数据库单表有100W行记录,都有哪些方式加快查询速度
1、合理添加索引 2、优化数据库缓存 3、优化数据库IO
Mysql单表最大记录是多少
mysql单表最大记录数不能超过多少?
其实mysql本身并没有对单表最大记录数进行限制,这个数值取决于你的操作系统对单个文件的限制本身。
从性能角度来讲,Mysql单表数据不要超过多少呢?
业界流传是500万行,超过500万行就要考虑分库分表了。
曾经在中国互联网技术圈广为流传着这么一个说法:Mysql单表数据量大于2000万行,性能会明显下降。事实上,这个传闻最早起大概是这样的,当年的DBA测试Mysql性能时发现,当单表的量在2000万行量级时,Sql操作的性能急剧下降,因此,结论由此传到业界的其他公司。所以就在业界流传开这么一个说法。
再后来,阿里巴巴《Java开发手册》提出单表行数超过500万行或者单表容量超过2GB,才推荐进行分库分表。
那么当单表容量超过500万行,查询效率下降后,我们可以如何应付呢?
有如下几种方式(来源于真实的企业):
- 对于使用不多的表(外部依赖少,信息不重要),可以直接清除老表,数据归档到hbase(或类似的,大容量成本低的冷库)
- 分库分表
- 老表保留,旧数据归档(参考第一点)
以上是关于假如mysql数据库单表有100W行记录,有哪些方式加快查询速度的主要内容,如果未能解决你的问题,请参考以下文章