数据库在线答疑

数据库在线答疑

2
投票
3
已解决
2944
浏览
0
投票
2
回答
1977
浏览

SQLSERVER 监控

桦仔 回复了问题 • 2015-12-28 20:14
0
投票
2
已解决
2314
浏览

sqlserver 索引视图

gogodiy 回复了问题 • 2015-10-23 16:47
0
投票
2
已解决
2349
浏览
0
投票
3
已解决
2475
浏览
0
投票
2
已解决
2262
浏览
0
投票
1
已解决
1700
浏览

mysql查询优化问题

老头子 回复了问题 • 2015-10-23 14:29
0
投票
1
回答
1828
浏览
条新动态, 点击查看
declare @content varchar(max)
set @content = (select name+',' from sys.syscolumns
where id = OBJECT_ID(N'cifDictionaryItem')
-... 显示全部 »
declare @content varchar(max)
set @content = (select name+',' from sys.syscolumns
where id = OBJECT_ID(N'cifDictionaryItem')
--此处可以写些条件,控制自增列、排序列等等
for xml path(''))
set @content = 'select '+SUBSTRING(@content,1,len(@content)-1)+ ' from cifDictionaryItem'
exec (@content)
BIWORK

BIWORK 回答了问题 • 2015-10-22 17:26 • 3 个回复 不感兴趣

数据库设计表字段长度的问题

赞同来自:

非常详细的描述,非常详细的问题和思考方式,赞!

SSIS 里面有一个探查 Profiler 查看数据源数据质量的东西,也可以用来看看数据源字段长度范围,你也可以看看(SSIS 课程中你自己找一下有一章讲解这个)。

如果已经明确国际条形码一定是13位... 显示全部 »
非常详细的描述,非常详细的问题和思考方式,赞!

SSIS 里面有一个探查 Profiler 查看数据源数据质量的东西,也可以用来看看数据源字段长度范围,你也可以看看(SSIS 课程中你自己找一下有一章讲解这个)。

如果已经明确国际条形码一定是13位的话,现在报错你的处理方式可以是通过 ERROR_OUTPUT 将错误的数据输出到指定文件进行手工检查和验证(课程已详细讲解操作方式,可以看看)。

验证的时候你可能会发现看上去输出的结果也没有问题,把鼠标放上去全部选中看看高亮的地方这个字符串是否还有空白?

看看这个例子你是不是就明白了?
8374
是不是有可能你数据的清洗方式有漏洞,在处理转换的时候应该考虑去掉空白的问题。

如果不是这个空白问题造成的,就应该 ERROR OUTPUT 认真检查一下数据源错误数据看看差异来源于哪里?
RID查找,又称书签查找,键查找,就是非聚集索引的RID先查询到聚集索引的键值,再根据这个键值查询到具体的记录。
缺点:
书签查找(键查找)要求索引页面访问之外的数据页面访问。访问两组页面增加了查询逻辑读操作次数。而且,如果页面不在内存中,书签查找(键查找)可... 显示全部 »
RID查找,又称书签查找,键查找,就是非聚集索引的RID先查询到聚集索引的键值,再根据这个键值查询到具体的记录。
缺点:
书签查找(键查找)要求索引页面访问之外的数据页面访问。访问两组页面增加了查询逻辑读操作次数。而且,如果页面不在内存中,书签查找(键查找)可能需要在磁盘上的一个随机(非顺序)I/O操作来从索引页面跳转到数据页面,还需要必要的CPU能力来汇集这一数据并执行必要的操作。

为了从非聚集索引中获益,查询应该请求相对少的行。
如果请求的行相对较多,那么在有聚集索引的情况下,尽量指定走聚集索引。
使用聚集索引和表扫描时不存在书签查找(RID查找、键查找)。

书签查找(RID查找、键查找)的起因:
如果查询的各部分(不只是选择列表)中引用的列不都包含在使用的非聚集索引中,就会发生书签查找(键查找)。

解决书签查找(RID查找、键查找)
使用一个聚集索引:有局限性,因为一个表只能有一个聚集索引。
使用一个覆盖索引:要么添加到索引列,要么INCLUDE包含这些列。推荐首选
使用聚集索引列作为SELECT子句的查询列。
 
使用索引联接:
如果覆盖索引变得非常宽,使用多个窄索引的索引连接也可以作为避免书签查找(RID查找、键查找)的一种技术。
优点:
    多个窄索引和宽的覆盖索引相比,可以为更大量的查询提供服务。
    窄索引比宽的覆盖索引需要的维护开销更小。

通常来说,可以先创建窄索引,看优化器是否利用了多个窄索引的索引连接。如果没有的话,那就是用覆盖索引,尽量少用复合索引。

如果一个表没有聚集索引,只有非聚集索引,那么在查询一个大的结果集时,表扫描比通过非聚集索引再通过书签查找(RID查找、键查找)性能更好。
 
 
主要是从性能,运维复杂程度以及编程等方面考虑。
弄太多constraints以后数据出问题的时候处理非常麻烦。
 
而且,基本假定:
1. 本意是源系统数据是referential integrity的,所以DW不用处理。
   其实是,源系统都没搞定的DQ问... 显示全部 »
主要是从性能,运维复杂程度以及编程等方面考虑。
弄太多constraints以后数据出问题的时候处理非常麻烦。
 
而且,基本假定:
1. 本意是源系统数据是referential integrity的,所以DW不用处理。
   其实是,源系统都没搞定的DQ问题,DW也搞不定,索性放脏数据进来吧。
 
2. 本意是ETL程序会处理一部分数据,虽然DB上不做constrants,但程序上我都处理干净了。
   其实是,嗯,是会处理一部分,但数据问题依然严重。
 
3. MDM系统里面这方面就严格得多,所以删条数据累死你。DW就算了吧。
 
如果让我重新选择,我还是不加外键,但会有程序定期搜集数据问题。
郑大鹏

郑大鹏 回答了问题 • 2015-10-23 09:23 • 2 个回复 不感兴趣

列式数据库与行式数据库主要区别有哪些?

赞同来自:

1  行式更适合OLTP, 查询一个记录的所有列。
    列式更适合OLAP,非常适合于在数据仓库领域发挥作用,比如数据分析、海量存储和商业智能;涉及不经常更新的数据。由于设计上的不同,列式数据库在并行查询处理和压缩上更有优势。而且数据是以列为单元存储,完全... 显示全部 »
1  行式更适合OLTP, 查询一个记录的所有列。
    列式更适合OLAP,非常适合于在数据仓库领域发挥作用,比如数据分析、海量存储和商业智能;涉及不经常更新的数据。由于设计上的不同,列式数据库在并行查询处理和压缩上更有优势。而且数据是以列为单元存储,完全不用考虑数据建模或者说建模更简单了。要查询计算哪些列上的数据,直接读取列就行。
2  列式在存储方面占有很大的优势,能有效提高数据压缩比,节省存储空间。
http://m.blog.csdn.net/blog/u011397715/41249081
http://blog.sina.com.cn/s/blog_6fd335bb0100usn7.html
http://blog.csdn.net/ggxxkkll/article/details/21288033

其实这个问题你可以直接度娘的!
个人感觉系统在使用峰值时,看下任务管理内存使用情况就可以。
 网上提供的一些方案。
性能监视器临视以下数据:
Memory->Available MBytes  可用的内存  windows系统不低于1G,
如果可用内存不多,则系统要求sqlserver... 显示全部 »
个人感觉系统在使用峰值时,看下任务管理内存使用情况就可以。
 网上提供的一些方案。
性能监视器临视以下数据:
Memory->Available MBytes  可用的内存  windows系统不低于1G,
如果可用内存不多,则系统要求sqlserver释放内存
Paging File->%usage  用百分比显示的正在使用的 Page File 实例的数量  
此值一般要低于60%,否则表示内存不够用
 
悟

回答了问题 • 2015-10-23 14:27 • 2 个回复 不感兴趣

sqlserver 索引视图

赞同来自:

视图是一个保存的T-SQL查询。视图定义由SQL Server保存,以便它能够用作一个虚拟表来简化查询,并给基表增加另一层安全。但是,它并不占用数据库的任何空间。
 索引视图是一个已被物化或保存在数据库中的视图。当基本表更新时,给视图建立的索引由数据库引擎保存... 显示全部 »
视图是一个保存的T-SQL查询。视图定义由SQL Server保存,以便它能够用作一个虚拟表来简化查询,并给基表增加另一层安全。但是,它并不占用数据库的任何空间。
 索引视图是一个已被物化或保存在数据库中的视图。当基本表更新时,给视图建立的索引由数据库引擎保存和更新。当你的结果集返回许多行并且需要求总数时,索引视图十分有用。这是因为数据库引擎必须在基表数据更新时维持视图索引,这可能会降低事务的性能。

要给一个视图建立一个索引,视图定义必须遵守某组条件和会话设置,同时要求把基表和视图定义联系起来。如果你确定你的视图满足这些标准,你给视图建立的第一个索引必须是一个唯一的聚集索引。建立的第一个视图必须在一组栏上,并且被聚集,以便索引被物化。
你这个不属于Oracle类的问题,
你的页面是用什么做的?BIEE?BO?还是java? 
 
前台数据权限和哪个数据库无关,要看你的权限方案如何做。
而且你的数据来自MongoDB,Oracle内只有用户信息,
具体权限控制有很多方案,举几个例子
1. 前台... 显示全部 »
你这个不属于Oracle类的问题,
你的页面是用什么做的?BIEE?BO?还是java? 
 
前台数据权限和哪个数据库无关,要看你的权限方案如何做。
而且你的数据来自MongoDB,Oracle内只有用户信息,
具体权限控制有很多方案,举几个例子
1. 前台报表工具实现,不过要看你所谓的“一部分数据”是否在维度筛选器中,如果是,则可以通过SQL实现维度筛选。
2. 底层事实表通过增加权限标识符,然后对应的用户信息中同样增加对应的标识,进行关联过滤
老头子

老头子 回答了问题 • 2015-10-23 14:29 • 1 个回复 不感兴趣

mysql查询优化问题

赞同来自:

mysql和oracle不同,where条件是基于规则解析的,解析顺序是从左到右。
可以看下你的条件中哪个过滤的最多,哪个条件就放到最左边
mysql和oracle不同,where条件是基于规则解析的,解析顺序是从左到右。
可以看下你的条件中哪个过滤的最多,哪个条件就放到最左边
gogodiy

gogodiy 回答了问题 • 2015-10-23 16:43 • 2 个回复 不感兴趣

SQLSERVER占用CPU过高如何优化?

赞同来自:

除了悟同学给的链接外,可以关注下多核CPU的NumaNode配置是否合理。
除了悟同学给的链接外,可以关注下多核CPU的NumaNode配置是否合理。
flybi_xw

flybi_xw 回答了问题 • 2015-10-23 15:01 • 3 个回复 不感兴趣

sqlserver怎么优化group by

赞同来自:

你的需求,不需要group by .直接去掉。
select distinct A from table with(Nolock) where    A in(几千条数据)
还慢的话,把in 换成 join
你的需求,不需要group by .直接去掉。
select distinct A from table with(Nolock) where    A in(几千条数据)
还慢的话,把in 换成 join
统计信息
直方图
hint
最大的是cbo的bug 比如低效的SQL写法等
cbo的bug也是最常出现的
统计信息
直方图
hint
最大的是cbo的bug 比如低效的SQL写法等
cbo的bug也是最常出现的
1.使用LIKE的时候尽量将通配符%放在后面,如Name like '张%';
2.避免困难的正规表达式,比如查询邮编20开头的,通常用ZipCode like '20%',其实可以调整为ZipCode>='200000' and ZipCode<... 显示全部 »
1.使用LIKE的时候尽量将通配符%放在后面,如Name like '张%';
2.避免困难的正规表达式,比如查询邮编20开头的,通常用ZipCode like '20%',其实可以调整为ZipCode>='200000' and ZipCode<'300000',如果ZipCode字段有索引,那么就可以有效使用到索引。
你是在系统里kill的进程 还是在Oracle里? 用的什么命令
你是在系统里kill的进程 还是在Oracle里? 用的什么命令
这个要找资深的运维DBA回答你
我个人不是DBA,也说下我的认识哈
1. 业务系统可接受的停机时间窗内能否完成升级和测试,如果不能是否可以进行在线升级
2. 数据备份时间点的数据完整性如何保证
3. 一旦失败对应的回滚措施
4. 一切有可能涉及到的周边模块接口... 显示全部 »
这个要找资深的运维DBA回答你
我个人不是DBA,也说下我的认识哈
1. 业务系统可接受的停机时间窗内能否完成升级和测试,如果不能是否可以进行在线升级
2. 数据备份时间点的数据完整性如何保证
3. 一旦失败对应的回滚措施
4. 一切有可能涉及到的周边模块接口人和支持人员安排
5. 升级成功数据验证方式
6. 和上下游的时间衔接是否有冲突等等
 
我的回答不足以解答你的疑惑,只是说说我的看法,回答不全面也不是经验之谈,还是建议你找专业的运维DBA问问。
2
投票
3
已解决
2944
浏览
0
投票
2
回答
1977
浏览

SQLSERVER 监控

桦仔 回复了问题 • 2015-12-28 20:14
0
投票
2
已解决
2314
浏览
0
投票
2
已解决
2349
浏览
0
投票
3
已解决
2475
浏览
0
投票
2
已解决
2262
浏览
0
投票
1
已解决
1700
浏览
0
投票
1
回答
1828
浏览