数据库管理员

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

5
更新所有行
我想知道以最有效的方式针对单个列更新超大型Oracle表中的每一行。例如: update mytable set mycolumn=null; 要么: update mytable set mycolumn=42; 我的知识可能很过时。我要做的是更改表以删除列。然后,我更改表以添加具有我要使用的新值的默认值的列。然后,我更改表以删除该列的默认值。我发现这比运行更新要快得多,但是我觉得有更好的方法。
12 oracle  update 

2
9990的“缓冲区高速缓存命中率”是什么意思?
我从博客文章中得到了这个查询: SELECT object_name, counter_name, cntr_value FROM sys.dm_os_performance_counters WHERE [object_name] LIKE '%Buffer Manager%' AND [counter_name] = 'Buffer cache hit ratio' 该帖子说,这将使我对缓存的命中率有所提高。似乎表明它将是0-100的值(结果显示为87)。 但是当我运行它时,我得到的数字很高。这是一个例子: object_name counter_name cntr_value SQLServer:Buffer Manager Buffer cache hit ratio 9990 这是否意味着99.90%? 如果没有,那是什么意思?我如何获得真正的价值? 注意:我得到的值低至257和高至352363 如果相关,则还有其他一些服务器统计信息: 网页预期寿命:145 页面每秒读取数:1,380,009,009

1
CONVERT()导致此问题的原因是什么?
考虑以下两个语句: PRINT CONVERT(NUMERIC(38, 0), 0x0100000001, 0); PRINT CONVERT(NUMERIC(38, 0), 0x0100010001, 0); 两条语句都返回-1; 那不是很错误,因为第二个二进制值比第一个值高十进制65,536,不是吗? 当然这不能归因于沉默的截断吗? 如果我运行以下语句: PRINT CONVERT(NUMERIC(38, 0), 0x00000001, 0); PRINT CONVERT(NUMERIC(38, 0), 0x00010001, 0); 出现以下错误: Msg 8114, Level 16, State 5, Line 1 Error converting data type varbinary to numeric. 我如何诊断这里发生了什么? 我正在SQL Server 2012 v11.0.5058上运行它。在SQL Server 2008 R2 SP2,SQL …

4
全文搜索导致“全文初始化”中花费大量时间
我目前正在尝试对Stack Overflow注释的数据转储运行一些查询。架构如下所示: CREATE TABLE `socomments` ( `Id` int(11) NOT NULL, `PostId` int(11) NOT NULL, `Score` int(11) DEFAULT NULL, `Text` varchar(600) NOT NULL, `CreationDate` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, `UserId` int(11) NOT NULL, PRIMARY KEY (`Id`), KEY `idx_socomments_PostId` (`PostId`), KEY `CreationDate` (`CreationDate`), FULLTEXT KEY `Text` (`Text`) ) ENGINE=InnoDB …


3
如何可靠地确定给定的SQL Server实例是否具有“内存中的锁定页”权限?
可以将“锁定页面在内存中”权限授予SQL Server使用的服务帐户。这使SQL Server可以防止将内存分页到磁盘。 我注意到我们的几台SQL Server计算机没有配置本地策略以允许对SQL Server使用的服务帐户拥有此权利。由于我们有大量的服务器,因此最好使用“本地系统策略”管理控制台手动检查每台服务器。 是否可以使用T-SQL查询,扩展存储过程或其他一些方法来确定所讨论的服务器是否正确? 我不想使用EXEC xp_readerrorlog 0, 1, 'lock memory privilege was not granted';它,因为它依赖于检查当前的SQL Server错误日志。并且该错误日志可能不包含相关条目,前提是自从上次重新启动服务器以来,该日志已被翻转。我知道我可以检查通过修改第一个参数旧日志0来1等,但我们只保留10个错误日志,这可能是不够的。我想要确认设置的故障保护方法。


2
SSIS失败后如何继续
我想要实现以下内容: 在此程序包中,我想遍历数据库名称列表,以动态修改连接管理器设置。 但是,“测试连接”上的第一个失败将暂停并导致程序包执行失败。 但是我想继续我的Foreach循环。我感觉这应该可行(否则这些红色故障箭头的用例是什么?) 我尝试过的事情包括弄乱“ MaximumErrorCount”。
12 ssis-2012 

3
CouchDB和文档版本控制
我目前正在使用CouchDB开发一个具有Wiki风格的应用程序,并且正在尝试实现文档版本控制方案。我看到它的方式有两种: 将每个版本存储为单独的文档 将较旧的版本存储为单个文档的附件。 现在,我有一种排名第一的工作方式。当用户编辑文档并保存时,后端首先将以前的修订版本复制到新文档中,然后保存新版本。每个文档都有一个“历史”数组,其中包含每个版本的数据(旧版本的文档_id,时间戳,编辑器等)。 由于此历史记录数组对于经常更新的文档可能会很漫长,因此我有一个视图,该视图在正常读取期间会获取没有历史记录的文档(还有另一个用于获取历史记录的视图)。 我的问题是:我对目前的方法感到不安,并一直在考虑更改为“附件”方法。但我不确定。我希望有一个比我更了解CouchDB的人(我才来这两个星期了-这是我的第一个使用CouchDB和NoSQL的项目)可以告诉我每种方法的优缺点方法。还是有其他我忽略的版本控制方案?

2
为什么在Postgres的EC2上使用RDS?
我有一个当前在EC2上运行的数据库。由于我必须将其移至更大的计算机,因此出现了使用RDS的问题。 价钱: 我可以获得一个EC2 c3.large实例,其中包含两个SSD(每个16GB),两个vCPU和4GB的按需存储,每小时的费用为0.132 USD [1]。 最接近(考虑价格)的RDS机器的价格db.m3.medium为每小时0.125美元(Single-AZ)[2]。该计算机具有相同的内存量,但只有一个vCPU [3]。另外,我将不得不为存储和io [2]支付费用。 因此,这两个的价格将非常相似。 EC2的优点: 如前所述,还有一个vCPU。 使用EC2时,我可以将Write-Ahead-Log放到第二张光盘上(将很多内容写入db时,性能会大大提高)。 我可以在EC2实例上运行pgbouncer(性能更高,因为我可以保持连接打开)。 我可以编辑配置文件(最终将提高性能) RDS的优点: 自动执行每日备份。 RDS能否涵盖EC2拥有的优势(尤其是2)?还有其他优势吗?

3
CHECKPOINT或COMMIT写入磁盘?
假设对于具有完整恢复模式数据库的SQLServer2008R2及更高版本。 我一直以为: 提交事务(COMMIT)后,该事务将写入RAM中的事务日志中。 当发生CHECKPOINT时(经过一些时间和/或某些事务和其他条件之后),最后一个CHECKPOINT和当前事务之间的事务将写入磁盘。 发生备份日志时,数据将写入MDF文件。 我对么?我的一些同事说我错了,即使有了BOL,也很难找到正确的答案。 谢谢!
12 sql-server 

2
编写维护计划
我使用SQL Server Management Studio(SSMS)为SQL Server 2008 R2创建了维护计划。 但是,如果需要在另一台服务器上重做,则无法将其导出/转换为脚本。 有办法吗? 如果不是,是否可以使用更新版本的SQL Server?

3
如何从两个不同的表中将值插入到表中?
我有三张桌子 students table ------------------------------------ id(PK, A_I) | student_name | nationality teachers table ------------------------------------ id(PK, A_I) | teacher_name | email classroom table ---------------------- id(PK, A_I) | date | teacher_id(FK to teachers.id) | student_id(FK to students.id) 如果我得到了老师的名字(david例如)和student_id数据(7例如),并要求插入teacher_id到classroom基于表id的teachers表,我会做: insert into classroom (date, teacher_id, student_id) select '2014-07-08', id, 7 from teachers where teacher_name = …

1
梭子鱼和压缩的好处
一段时间以前,我一直在阅读有关MySQL的文件格式Antelope和Barracuda的信息,我想知道使用Barracuda和Compression是否可以受益。 我的服务器当前正在使用Antelope,因为它是MySQL的默认设置。 由于我拥有大型数据库,因此内存问题很多次了。我的数据库每天都在增加。 压缩似乎正在使一些人受益,例如:http : //www.mysqlperformanceblog.com/2008/04/23/real-life-use-case-for-barracuda-innodb-file-format/ 我知道内存和磁盘空间可能会更少,但是我不确定是否理解这一点(引自文章): “〜5%根据顶部的CPU负载(从80-100%主要等待I / O) 0.01通过主键的平均平均查找时间(转换之前的1-20秒)” 我以为这两件事不会改善,因为如果压缩了数据,则服务器必须解压缩才能再次获取原始数据,因此,CPU使用率会增加吗? 这对您的读/写密集型应用程序有好处吗?您会建议我改为梭子鱼和压缩吗? 您知道梭子鱼有什么问题吗? 以下问题的答案似乎指出了一些问题,但是由于它是从2011年开始的,所以我要说它们现在已经解决:https : //serverfault.com/questions/258022/mysql-innodb-how-to-switch梭子鱼格式

3
MySQL实例拖延“做SYNC索引”
问题 运行(主要是)一个带有InnoDB表的数据库的MySQL 5.6.20实例在1-4分钟的时间内偶尔出现所有更新操作的停顿,而所有INSERT,UPDATE和DELETE查询都保持“查询结束”状态。这显然是最不幸的。MySQL慢查询日志甚至记录了具有疯狂查询时间的最琐碎的查询,其中数百个具有相同的时间戳,对应于已解决停顿的时间点: # Query_time: 101.743589 Lock_time: 0.000437 Rows_sent: 0 Rows_examined: 0 SET timestamp=1409573952; INSERT INTO sessions (redirect_login2, data, hostname, fk_users_primary, fk_users, id_sessions, timestamp) VALUES (NULL, NULL, '192.168.10.151', NULL, 'anonymous', '64ef367018099de4d4183ffa3bc0848a', '1409573850'); 设备统计信息显示出增加了,尽管在此时间段内I / O负载没有过多(在这种情况下,根据上述语句的时间戳,更新停顿了14:17:30-14:19:12): # sar -d [...] 02:15:01 PM DEV tps rd_sec/s wr_sec/s avgrq-sz avgqu-sz await svctm %util …

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.