Mysql 数据量级大的情况下,使用 多线程 查询

Mysql 数据量级大的情况下,使用 多线程 查询,第1张

思路:

    1.按着自己需要的条件分给不同的线程进行查询,查询结束后,将返回的结果add到全局的List中。例:时间段查询,将时间进行分块,然后拼装成List集合

在我们使用MySQL数据库时,比较常用也是查询,包括基本查询,关联查询,条件查询等等,对于同一个 *** 作,SQL语句的实现有很多种写法,但是不同的写法查询的性能可能会有很大的差异。这里主要介绍下select查询优化的要点。

1. 使用慢查询日志去发现慢查询。

2. 使用执行计划去判断查询是否正常运行。

3. 总是去测试你的查询看看是否他们运行在最佳状态下 –久而久之性能总会变化。

4. 避免在整个表上使用count(*),它可能锁住整张表。

5. 使查询保持一致以便后续相似的查询可以使用查询缓存

6. 在适当的情形下使用GROUP BY而不是DISTINCT。

7. 在WHERE, GROUP BY和ORDER BY子句中使用有索引的列。

8. 保持索引简单,不在多个索引中包含同一个列。

9. 有时候MySQL会使用错误的索引,对于这种情况使用USE INDEX。

10. 检查使用SQL_MODE=STRICT的问题。

11.对于记录数小于5的索引字段,在UNION的时候使用LIMIT不是是用OR.

12. 为了 避免在更新前SELECT,使用INSERT ON DUPLICATE KEY或者INSERT IGNORE ,不要用UPDATE去实现。

3. 不要使用 MAX,使用索引字段和ORDER BY子句。

14. 避免使用ORDER BY RAND().

15. LIMIT M,N实际上可以减缓查询在某些情况下,有节制地使用。

16. 在WHERE子句中使用UNION代替子查询。

17. 对于UPDATES(更新),使用 SHARE MODE(共享模式),以防止独占锁。

18. 在重新启动的MySQL,记得来温暖你的数据库,以确保您的数据在内存和查询速度快。

19. 使用DROP TABLE,CREATE TABLE DELETE FROM从表中删除所有数据。

20. 最小化的数据在查询你需要的数据,使用*消耗大量的时间。

21. 考虑持久连接,而不是多个连接,以减少开销。

22. 基准查询,包括使用服务器上的负载,有时一个简单的查询可以影响其他查询。

23. 当负载增加您的服务器上,使用SHOW PROCESSLIST查看慢的和有问题的查询。

24. 在开发环境中产生的镜像数据中 测试的所有可疑的查询。

来源:PHP程序员雷雪松的博客

MySQL 3.22 限制的表大小为4GB。由于在MySQL 3.23 中使用了MyISAM 存储引擎,最大表尺寸增加到了65536TB(2567 – 1字节)。由于允许的表尺寸更大,MySQL数据库的最大有效表尺寸通常是由 *** 作系统对文件大小的限制决定的,而不是由MySQL内部限制决定的。

InnoDB 存储引擎将InnoDB 表保存在一个表空间内,该表空间可由数个文件创建。这样,表的大小就能超过单独文件的最大容量。表空间可包括原始磁盘分区,从而使得很大的表成为可能。表空间的最大容量为64TB。

扩展资料

MySQL数据库中,数据量越来越大的优化方案:

单表优化可以从这几个角度出发:

1、表分区

MySQL在5.1之后才有的,可以看做是水平拆分,分区表需要在建表的需要加上分区参数,用户需要在建表的时候加上分区参数;分区表底层由多个物理子表组成,但是对于代码来说,分区表是透明的。

SQL中的条件中最好能带上分区条件的列,这样可以定位到少量的分区上,否则就会扫描全部分区。

2、增加缓存

主要的思想就是减少对数据库的访问,缓存可以在整个架构中的很多地方;比如:数据库本身有就缓存,客户端缓存,数据库访问层对SQL语句的缓存,应用程序内的缓存,第三方缓存(如Redis等)。


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

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

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

发表评论

登录后才能评论

评论列表(0条)

保存