社区
Java EE
帖子详情
关于大数据量查询导致的database的效率问题(只给最佳答案50分)
michaellufhl
2010-08-16 08:31:14
数据库中存有大量日志数据,程序界面提供各种查询条件的查询。(譬如日期查询+日志级别查询+....)
但是数据量相当大,一执行SQL语句就会花费很长时间。
请问有何良策?或者可以从算法角度来解决。
加
索引
,和做
stored procedure
都试过,但是效果不好。
...全文
181
17
打赏
收藏
关于大数据量查询导致的database的效率问题(只给最佳答案50分)
数据库中存有大量日志数据,程序界面提供各种查询条件的查询。(譬如日期查询+日志级别查询+....) 但是数据量相当大,一执行SQL语句就会花费很长时间。 请问有何良策?或者可以从算法角度来解决。 加索引,和做stored procedure都试过,但是效果不好。
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
17 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
jjyz31
2010-08-18
打赏
举报
回复
学习了。。
yutaoice
2010-08-18
打赏
举报
回复
[Quote=引用 12 楼 michaellufhl 的回复:]
感觉分区是个很好的答案。
根据时间分区?
[/Quote]
千万不要按时间做分区,宁可用level分区,分区数量少没关系,如果你有5个level,50万的总数据量,平均每个分区下就只有10W数据了,表分区跟分表是一样的,两个数据量稍小的表关联查询,绝对比一个数据量稍大的单表查询速度还慢(sql优化程度相当的情况下)
yutaoice
2010-08-18
打赏
举报
回复
[Quote=引用 13 楼 bao110908 的回复:]
说实在,很讨厌这种问数据库问题,连用什么数据库都不说,更可恨的是表结构也没有,就是三两句话让别人来优化!
日志级别就那么几种,创建普通 B-Tree 没有任何用处,可以试着创建位图索引。
日期的话,由于没有结构、用的什么数据库也不知道,无能为力!
[/Quote]
看sql语句还看不出来是mysql数据库,只能说你数据库水平一般了,要不然就是没接触过mysql
yutaoice
2010-08-17
打赏
举报
回复
把(date BETWEEN '2010-1-1' AND '2010-2-2')去掉试试,效率应该高很多,如果是这条语句导致的执行速度慢,那就换成date >= '2010-1-1' and date <= '2010-2-2'
还有办法就是加表分区,但是要注意表分区不能加在date字段上,按你的sql应该加在level上。
行舟
2010-08-17
打赏
举报
回复
分区了
或者按天分表了
youandi79
2010-08-17
打赏
举报
回复
google 一下
oracle partition table
kala197
2010-08-17
打赏
举报
回复
分库 也就是把业务和日志分开在两个数据库里面
在数据库里面建立分区
在页面上建立缓存
用存储过程
读写分离 把查询的房子一个服务器上 数据插入、修改放到另一个服务器上
kaida_7
2010-08-17
打赏
举报
回复
把添加日志记录和查询记录分为两个数据库,然后在某一个时间段再给予同步,日志记录分库,分表存储(库名,表明按照一定的规律建立,建议一张表存储最多几百万条记录就比较合适了);这样应该能提高查询速度。。。当然,还有就是提高硬件性能了,呵呵。。。
临远
2010-08-17
打赏
举报
回复
水平分表
全文检索
NoSQL
michaellufhl
2010-08-17
打赏
举报
回复
[Quote=引用 13 楼 bao110908 的回复:]
说实在,很讨厌这种问数据库问题,...就是三两句话让别人来优化!
...无能为力!
[/Quote]您的回复里面的惊叹号太多了:)
火龙果被占用了
2010-08-17
打赏
举报
回复
说实在,很讨厌这种问数据库问题,连用什么数据库都不说,更可恨的是表结构也没有,就是三两句话让别人来优化!
日志级别就那么几种,创建普通 B-Tree 没有任何用处,可以试着创建位图索引。
日期的话,由于没有结构、用的什么数据库也不知道,无能为力!
michaellufhl
2010-08-17
打赏
举报
回复
感觉
分区
是个很好的答案。
根据时间分区?
Thinking_In_IT
2010-08-17
打赏
举报
回复
[Quote=引用楼主 michaellufhl 的回复:]
数据库中存有大量日志数据,程序界面提供各种查询条件的查询。(譬如日期查询+日志级别查询+....)
但是数据量相当大,一执行SQL语句就会花费很长时间。
请问有何良策?或者可以从算法角度来解决。
加索引,和做stored procedure都试过,但是效果不好。
[/Quote]
1)+索引是必须的l(level字段,和date字段)
2)SQL 语句改为:SELECT 字段1,字段2…… FROM log WHERE level=1 AND (date BETWEEN '2010-
1-1' AND '2010-2-2')
3)把log表 分区
4)缓存部分离线数据,页面上不可能一次就显示几千万条数据吧?
小爽昵称已被占用
2010-08-16
打赏
举报
回复
1.视图试了么。
2.使用定时器后台执行生成需要的数据为临时表,(不知道你查询出来要干什么)。
michaellufhl
2010-08-16
打赏
举报
回复
或者说这个table叫log,有上千万条记录。
SQL语句是:
SELECT * FROM log WHERE level=1 AND (date BETWEEN '2010-1-1' AND '2010-2-2')
michaellufhl
2010-08-16
打赏
举报
回复
[Quote=引用 1 楼 xuhuanchao 的回复:]
优化SQL语句试试
[/Quote]本身SQL语句不复杂。
水中影子
2010-08-16
打赏
举报
回复
优化SQL语句试试
Mysql
大数据
量
查询
优化的思路
项目场景: Mysql大表
查询
优化,理论上千万级别以下的数据
量
Mysql单表
查询
性能处理都是可以的。
问题
描述: 在我们线上环境中,出现了mysql几千万级别的日志
查询
、几百万级别的黑名单库
查询
分
页
查询
及条件
查询
都慢的
问题
,针对Mysql表优化做了一些优化处理。 原因
分
析: 首先说一下日志
查询
,在Mysql中如果索引加的比较合适,走索引情况下千万级别
查询
不会超过一秒,Mysql
查询
的速度和检索的数据条数有关。在Mybatis中,
分
页
查询
是先执行Count记录总数,再执行limit a,b 的方式来进行
大数据
量
数据库设计与优化方案(SQL优化)
看到一篇非常不错的数据库设计文章,故转载: 原链接:http://blog.sina.com.cn/s/blog_6c0541d
50
102wxen.html 正文如下: 一、数据库结构的设计 如果不能设计一个合理的数据库模型,不仅会增加客户端和服务器段程序的编程和维护的难度,而且将会影响系统实际运行的性能。所以,在一个系统开始实施之前,完备的数据库模型的设计是必须的。 在一个系统
分
析、设计阶段,因为数据
量
较小,负荷较低。我们往往只注意到功能的实现,而很难注意到性能的薄弱之处,等到系统投入实际运行一段时间后,
java h2 性能_最佳实践使用JAVA内存数据库h2
database
性能优化.doc
最佳实践使用JAVA内存数据库h2
database
性能优化最佳实践:使用JAVA内存数据库h2
database
性能优化
分
类:Java性能优化作者:凡彬勇日期:2011-08-1导读:使用JAVA内存数据库h2
database
性能优化,提高数据处理速度,解决IO瓶颈
问题
问题
我们在开发应用都知道IO是系统性能的瓶颈,在应用开发中,我们会经常碰到以下
问题
:1.系统在不断实时地访问数据库时,一秒钟对同...
都知道 Redis 中的
查询
速度很快,那么 Redis 如何保证高效的
查询
效率
?
Redis 如何保证高效的
查询
效率
为什么 Redis 比较快 Redis 中的
查询
速度为什么那么快呢? 1、因为它是内存数据库; 2、归功于它的数据结构; 3、Redis 中是单线程; 4、Redis 中使用了多路复用。 Redis 中的数据结构 这里借用一张来自[Redis 核心技术与实战] Redis 中数据结构和底层结构的对应图片 简单动态字符串 Redis 中并没有使用 C 中 char 来表示字符串,而是引入了 简单动态字符串(Simple Dynamic Strings,..
clickhouse
查询
优化_clickhouse优化最佳实践(持续更新...)
clickhouse在易企秀数据仓库项目中已投入使用两年,主要为内部用户提供快速
查询
和多维
分
析的能力;希望你在业务当中遇到的性能
问题
,在这里都能得到解决Clickhouse堪称OLAP领域的黑马,最近发布的几个版本在多表关联
分
析上也有了极大的性能提升,尤其是还引入了MaterializeMySQL
Database
Engine做到了实时对齐业务线mysql中的数据。表优化数据类型建表时能用数值型...
Java EE
67,512
社区成员
225,881
社区内容
发帖
与我相关
我的任务
Java EE
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
复制链接
扫一扫
分享
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章