如何提高mysql查询速度

如何提高mysql查询速度,第1张

在已有的 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 方式将每个节点返回的结果聚合在一起形成完整的结果。

首先是你的数组取值方法不对,

+"str[0]"+

+str[0]+

是不一样的!!!

对于这样复杂的sql语句,

建议你不要使用String类型那个看起来很恶心的+ 符合 *** 作,

采用StringBuffer 和StringBuilder类的 append方法,

更加的符合我们面向对象编程的代码风格,

虽然代码行数会多点,但是看起来更加直观,不易出错。

import java.sql.Connection

import java.sql.DriverManager

//连接数据库的辅助类;

public class JdbcHelp {//jdbc辅助类

private static Connection conn=null

private static String url="jjdbc:oracle:thin:@192.168.1.3:1521:oral"

private static String uname="scott"

private static String pass="tiger"

public synchronized static Connection getConn() {

try {

Class.forName("oracle.jdbc.driver.OracleDriver")

conn=DriverManager.getConnection(url,uname,pass)

} catch (Exception e) {

// TODO Auto-generated catch block

e.printStackTrace()

}

return conn

}

}

//按id查询的一个方法

public User getById(int id) {

try {

Statement st = JdbcHelp.getConn().createStatement()

ResultSet rs = st.executeQuery("select * from tbuser where id="+id)

user u = new User()

while (rs.next()) {

u.setId(rs.getInt(1))

u.setPrice(rs.getString(2))

u.setSex(rs.getString(3))

}

} catch (Exception e) {

// TODO Auto-generated catch block

e.printStackTrace()

}

return u

}

}


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

原文地址: http://outofmemory.cn/zaji/8669366.html

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

发表评论

登录后才能评论

评论列表(0条)

保存