假如mysql数据库单表有100W行记录,都有哪些方式加快查询速度

假如mysql数据库单表有100W行记录,都有哪些方式加快查询速度,第1张

添加索引或者使用工具,比如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 方式将每个节点返回的结果聚合在一起形成完整的结果。

Spark的安装分为几种模式,其中一种是本地运行模式,只需要在单节点上解压即可运行,这种模式不需要依赖Hadoop 环境。
运行 spark-shell
本地模式运行spark-shell非常简单,只要运行以下命令即可,假设当前目录是$SPARK_HOME
$ MASTER=local $ bin/spark-shell
MASTER=local就是表明当前运行在单机模式。如果一切顺利,将看到下面的提示信息:
Created spark context
Spark context available as sc
这表明spark-shell中已经内置了Spark context的变量,名称为sc,我们可以直接使用该变量进行后续的 *** 作。
spark-shell 后面设置 master 参数,可以支持更多的模式,
我们在sparkshell中运行一下最简单的例子,统计在READMEmd中含有Spark的行数有多少,在spark-shell中输入如下代码:
scala>sctextFile("READMEmd")filter(_contains("Spark"))count
如果你觉得输出的日志太多,你可以从模板文件创建 conf/log4jproperties :
$ mv conf/log4jpropertiestemplate conf/log4jproperties
然后修改日志输出级别为WARN:
log4jrootCategory=WARN, console
如果你设置的 log4j 日志等级为 INFO,则你可以看到这样的一行日志 INFO SparkUI: Started SparkUI at >这里是结合Hadoop20使用的1,download:根据下载的spark的README中的描述下载合适的版本3,安装其实就是解压,配置/etc/profile环境变量exportSPARK_HOME=/data1/spark/sparkexportSCALA_HOME=/data1/spark/scala-293exportPATH=$PATH:$SPARK_HOME/bin:$SCALA_HOME/bin配置spark的conf下的spark-envshexportJAVA_HOME=/usr/java/defaultexportSCALA_HOME=/data1/spark/scala-293exportSPARK_MASTER_IP=19216801exportSPARK_MASTER_WEBUI_PORT=8080exportSPARK_WORKER_WEBUI_PORT=8000exportYARN_CONF_DIR=/data/hadoop/hadoop-20/etc/hadoop配置slaves(ip根据需要修改)1921680219216803分发spark目录和scala目录到几台服务器相同路径下4,启动进入主节点的spark目录的bin下stop-allsh是停掉集群,start-allsh启动集群,jps可以在主节点看到master进程,slave节点看到worker进程5,运行程序,运行例子进入spark目录下分布式运行/run-exampleorgapachesparkexamplesSparkPispark://19216801:7077/run-exampleorgapachesparkexamplesSparkLRspark://19216801:7077本地运行/run-exampleorgapachesparkexamplesSparkPilocal/run-exampleorgapachesparkexamplesSparkLRlocal


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/zz/10685352.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-10
下一篇2023-05-10

发表评论

登录后才能评论

评论列表(0条)

    保存