数据库管理员

希望提高数据库技能并向社区中的其他人学习的数据库专业人员的问答

5
检测SQL Server表中的更改
在我的应用程序中,有了在SQL Server 2012上运行的数据库,我得到了一个作业(计划任务),该作业会定期执行昂贵的查询并将结果写入表中,以供应用程序以后查询。 理想情况下,仅当自上次执行查询以来发生某些更改时,我才想运行该昂贵的查询。由于源表非常大,因此我不能只选择所有候选列之类的校验和。 我有以下想法: 每当我更改源表中的内容时,都应将最后更改的时间戳,“必须查询”标志或类似的内容显式地写入跟踪表。 使用触发器执行相同的操作。 但是,我真的很想知道是否存在一种轻量级的方法来检测表上的更改,而无需我明确跟踪写入。例如,我可以获取表的“当前” ROWVERSION值或诸如此类的东西吗?

2
安装SQL Server 2012 Express失败,并显示错误“找不到数据库引擎启动句柄”。
我正在尝试在Windows 7 SP1 x64上安装带SP1 x64的SQL Server Express 2012。这台机器以前安装了SQL Server Express 2012。此实例已升级到SQL Server 2012 Standard,此版本已卸载。 以下是在安装过程中选择的选项: 在安装中包括SQL Server产品更新-2与知识库文章2793634相关 将所有功能安装到默认目录 默认实例根目录中的命名实例SQLEXPRESS 默认服务帐户:SQL Server数据库引擎-> NT Service \ MSSQL $ SQLEXPRESS 默认数据库引擎配置 安装失败,并出现以下错误: 标题:Microsoft SQL Server 2012 Service Pack 1安装程序 发生以下错误: 找不到数据库引擎启动句柄。 要获取帮助,请单击:http : //go.microsoft.com/fwlink?LinkID=20476&ProdName=Microsoft%20SQL%20Server&EvtSrc=setup.rll&EvtID=50000&ProdVer=11.0.3128.0&EvtType=0xD15B4EB2%25400x4BDAF9BA%25401306%254025 - - - - - - - - - …

3
可以将DISTINCT FROM与ANY或ALL结合吗?
是结合一个Postgres的方式IS DISTINCT FROM与ANY或得到同样结果的其他一些巧妙的方法? select count(*) from (select 'A' foo union all select 'Z' union all select null) z where foo <> any(array[null, 'A']); count ------- 1 (1 row) select count(*) from (select 'A' foo union all select 'Z' union all select null) z where foo is distinct from any(array[null, 'A']); …

3
高CXPACKET和LATCH_EX等待
我正在使用的数据处理系统存在一些性能问题。我从一个小时的周期中收集了等待统计信息,其中显示了大量CXPACKET和LATCH_EX等待事件。 该系统由3个处理SQL Server组成,这些SQL Server进行了大量的数字运算和计算,然后将数据馈送到中央群集服务器中。处理服务器可以一次最多运行6个作业。这些等待统计数据是针对我认为正在引起瓶颈的中央集群的。中央群集服务器具有16个核心和64GB RAM。MAXDOP设置为0。 我猜CXPACKET来自正在运行的多个并行查询,但是我不确定LATCH_EX等待事件指示什么。从我读到的内容来看,这可能是非缓冲等待? 谁能说出这种等待统计的原因是什么,我应该采取什么行动来调查这个性能问题的根本原因? 顶部查询结果是等待的总计统计信息,底部查询结果是1小时内的统计信息

5
电子商务订单表。节省价格,还是使用审核/历史记录表?
我正在设计我的第一个电子商务模式。我已经阅读了一段时间,对an order_line_item和a 之间的关系有些困惑product 一个product可以被购买。它具有各种细节,但最重要的是unit_price。 在客户购买产品时,An order_line_item具有product_id购买,quantity购买和购买时的外键unit_price。 我读过的大部分内容都说unit_price上的order_line_item应该显式添加(即,不通过引用product_id)。这是有道理的,因为商店将来可能会更改价格,这会弄乱订单报告,跟踪,完整性等。 我不明白的是,为什么直接将unit_price值保存到order_line_item? 创建记录unit_price变更记录的审计/历史记录表会更好product吗? order_line_item创建an时,将product_audit添加表的外键,并可以从此处检索价格(通过引用)。 在我看来,使用这种方法有很多好处(减少数据重复,更改价格历史记录等),那么为什么不更频繁地使用它呢?我没有遇到使用这种方法的电子商务模式的示例,我错过了什么吗? UDPATE:看来我的问题与尺寸变化缓慢有关。我仍然很困惑,因为“缓慢变化的维度”与数据仓库和OLAP有关。那么,是否可以将“缓慢更改维度”类型应用于我的主要业务交易流程数据库(OLTP)?我想知道我是否将很多概念混在一起,将不胜感激一些指导。

3
如果我不删除临时内存表,该表将保留多长时间(MySQL)
我在MySQL中使用递归存储过程来生成名为的临时表id_list,但我必须在后续的select查询中使用该过程的结果,因此无法DROP在该过程中使用该临时表... BEGIN; /* generates the temporary table of ID's */ CALL fetch_inheritance_groups('abc123',0); /* uses the results of the stored procedure in the WHERE */ SELECT a.User_ID FROM usr_relationships r INNER JOIN usr_accts a ON a.User_ID = r.User_ID WHERE r.Group_ID = 'abc123' OR r.Group_ID IN (SELECT * FROM id_list) GROUP BY …

3
SQL Server自动修剪varchar值,相等比较但不喜欢比较
今天,我在SQL Server上遇到了一些有趣的行为(在2005年和2012年观察到),希望有人能解释一下。 使用=NVARCHAR字段进行比较的查询会忽略字符串中的尾随空格(或在比较之前自动修剪值),但是使用like运算符的同一查询不会忽略该空格。2012年使用的归类为Latin1_General_CI_AS。 考虑以下SQL Fiddle:http://sqlfiddle.com/#!6/72262/4 请注意,like运算符不会返回结尾空格字符串的结果,但=运算符会返回结果。为什么是这样? 优点:我无法在VARCHAR字段上复制它,我会认为在两种数据类型中都将以相同的方式处理空间-这是真的吗?

1
sys.partition.rows列的准确性如何?
系统视图sys.partitions具有“行”列,该列是给定分区中的总行数。对于未分区的表(或者只有一个分区,这取决于您的外观),此列给出了表中的行数。 我很好奇此列的准确性,以及是否可以使用它代替SELECT COUNT(1) FROM TableName。我做过一些实验,创建一个表并添加几千行,删除几百行,再添加几千个,等等,而且这种情况一直没有解决。但是,我有一张表,约有7亿行和几个索引。sys.partitions聚簇索引的行再次停滞不前,但是其他索引显示出一些细微的变化(+ -20k)。 有谁知道该行的计算方式以及它的准确性是否与所显示的相同?

1
将SQL Server 2012 Standard与Bitlocker一起使用
我们正在尝试使用Bitlocker保护SQL Server 2012数据库。使bitlocker正常工作没有任何问题...我们遇到的问题是,一旦驱动器被锁定,SQL Server就无法再读取数据。 显然,我们很想使用TDE,但是由于它仅限于企业版,所以这是不行的。我们在服务器上激活了TPM。这是在Windows域中,我们使用Windows身份验证...,但是驱动器加密后,我们将无法访问任何内容。 我在这里想念什么?


2
向大型mysql表添加索引
我有桌子 | base_schedule_line_items | CREATE TABLE base_schedule_line_items( idint(10)unsigned NOT NULL AUTO_INCREMENT, installmentint(10)unsigned NOT NULL, on_date日期NOT NULL, actual_date日期默认值, payment_typeint(11)NOT NULL, scheduled_principal_outstanding十进制(65,0)NOT NULL, scheduled_principal_due十进制(65,0) NOT NULL, scheduled_interest_outstanding十进制(65,0)NOT NULL, scheduled_interest_due十进制(65,0)NOT NULL, currencyint(11)NOT NULL, updated_at日期时间NOT NULL缺省'2013-01-06 14:29:16', created_atdatetime NOT NULL默认值' 2013-01-06 14:29:16', loan_base_schedule_idint(10)unsigned NOT NULL, lending_idint(10)unsigned NOT NULL, rescheduletinyint(1)DEFAULT'0', PRIMARY KEY(id), KEY index_base_schedule_line_items_loan_base_schedule (loan_base_schedule_id),KEY …

3
我想成为数据库管理员-如何开始?[关闭]
已关闭。这个问题是基于观点的。它当前不接受答案。 6年前关闭。 已锁定。该问题及其答案被锁定,因为该问题是题外话,但具有历史意义。它目前不接受新的答案或互动。 我刚刚在我的大学修了一个数据库课程,发现它很有趣。我想在这个领域学到更多,但是我对如何开始有点迷茫。 如何成为数据库管理员?进入职业领域有哪些技巧和窍门?我看到很多职位要求5年或5年以上的工作经验,并且不确定如何开始。 我应该寻找入门级的工作吗?什么样的技能,特质或证书会帮助我或帮助我获得更多的经验?我对MySQL最感兴趣。

3
我可以创建用户定义的表类型并在同一事务中使用它吗?
当我执行以下命令时(在Management Studio中,GO会将命令分成批处理) use tempdb begin tran go CREATE TYPE dbo.IntIntSet AS TABLE( Value0 Int NOT NULL, Value1 Int NOT NULL ) go declare @myPK dbo.IntIntSet; go rollback 我收到死锁错误消息。我的过程已经陷入僵局。我已经在2008、2008R2和2012中看到了这种行为。 有没有办法在创建的同一笔交易中使用我新创建的类型?

1
如何估算MySQL查询执行的I / O操作?
在亚马逊的RDS上,每100万个I / O请求支付约0.10美元。我注意到流量非常低的数据库有大量(数十万个)I / O请求。看到这一点,我做了进一步的研究,发现这个问题描述了对于一个拥有6,000个用户的网站,他每月产生8亿个I / O请求,这将使他每月花费约80美元。 因此,我想提前知道MySQL查询将生成多少个I / O操作,以及如何优化/最小化它们。是否有任何方法可以估算查询将执行的I / O操作数,以及我可以遵循的任何一般规则来使其尽可能降低?
13 mysql 

7
为什么PostgreSQL 9.3无法在Ubuntu上启动?
我已经成功从2个运行Ubuntu 12.04和13.04的VM的APT存储库中成功安装了PostgreSQL 9.3。但是,我无法将其正确安装在运行Ubuntu 12.04的主机上。 安装(这次)似乎一切正常,但也许是我不理解的错误: * No PostgreSQL clusters exist; see "man pg_createcluster" Setting up postgresql-9.3 (9.3.0-2.pgdg12.4+1) ... Creating new cluster 9.3/main ... config /etc/postgresql/9.3/main data /var/lib/postgresql/9.3/main locale en_US.UTF-8 port 5432 update-alternatives: using /usr/share/postgresql/9.3/man/man1/postmaster.1.gz to provide /usr/share/man/man1/postmaster.1.gz (postmaster.1.gz) in auto mode. 因此,我尝试将自己添加为PostgreSQL用户,但是我得到了: createuser: could not connect to database postgres: could …

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.