数据库管理员

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




7
什么是存储大量列的好方法?
我在决定如何将这些数据存储在数据库中时遇到问题。关于最佳方法的任何建议吗?我可能对数据库一无所知。 我的数据格式如下,但不是4,列数约为240,因此每个日期都有240个与之关联的唯一值: Date/Time 200,00 202,50 205,00 2010.11.12 13:34:00 45,8214 43,8512 41,5369 2010.11.12 13:35:00 461,9364 454,2612 435,5222 此外,行与DataSite关联。 我的第一个想法是要有一个像这样的表:DataID(pk),DataSiteID,ParameterID,Date,Value,以及在DataSite,Parameter和Date上的索引。ParameterID引用另一个存储输入列标题的表(200,00 202,50 205,00 ...)。 我的第二个想法只是简单地拥有一个包含所有240多个列的表。我想出了其他几种方法,但是它们也很不令人满意。 我的第一个解决方案有一个问题(不是一个很大的问题,但我不喜欢它),因为该输入行中的所有240个值都将重复使用Date和DataSiteID,所以使用了很多时间多余的空间。 每年大约会有40gb的数据传入(采用上述文本格式),并且将通过DataSite,Parameter和Date搜索数据。传入的数据量很可能在一年左右的时间内翻两番。 有什么好主意吗?谢谢,詹姆斯 编辑:这是时间序列数据,列是在不同波长下的测量值。想要在相对窄的波长范围内分析数据。将来某个时候可能还会添加额外的波长。 编辑:谢谢你们的回答,我真的很感激:)我想我可能可以找到时间用500GB左右的测试数据进行一些实验。我会把任何结论寄回去;)

6
在Oracle中删除大型记录集的最佳方法
我管理着一个应用程序,该应用程序具有非常大的Oracle数据库后端(一个表中的数据接近1TB,行数超过5亿)。数据库实际上并没有做任何事情(没有SProcs,没有触发器或任何东西),它只是一个数据存储。 每个月我们都需要从两个主表中清除记录。清除的标准各不相同,并且是行龄和几个状态字段的组合。通常,我们最终每月清除10到5000万行(我们每周通过导入增加大约3-5百万行)。 当前,我们必须批量删除约50,000行(即删除50000,提交,删除50000,提交,重复)。尝试一次全部删除整个批处理会使数据库在大约一个小时内无响应(取决于行数)。像这样批量删除行在系统上非常困难,我们通常必须在一周的时间内“在时间允许的情况下”进行删除。允许脚本连续运行可能会导致用户无法接受的性能下降。 我相信这种批量删除还会降低索引性能,并产生其他影响,最终导致数据库性能下降。一张表上有34个索引,索引数据的大小实际上大于数据本身。 这是我们的一位IT人员用来清除此错误的脚本: BEGIN LOOP delete FROM tbl_raw where dist_event_date < to_date('[date]','mm/dd/yyyy') and rownum < 50000; exit when SQL%rowcount < 49999; commit; END LOOP; commit; END; 该数据库必须达到99.99999%,并且我们每年只有一次2天维护窗口。 我正在寻找一种删除这些记录的更好的方法,但是我还没有找到任何记录。有什么建议么?

6
如何摆脱ORA-28002消息密码将在6天内过期?
我有一个用户收到ORA-28002,该密码指示密码将在六天内过期。我执行以下操作: ALTER PROFILE DEFAULT LIMIT PASSWORD_LIFE_TIME UNLIMITED; 但是,当我尝试以用户身份登录时,该消息仍然存在。执行此: select * from dba_profiles where RESOURCE_NAME LIKE 'PASSWORD_LIFE_TIME'; 显示值实际上已更改为UNLIMITED。
18 oracle  security 

4
如何将66,862,521行表从MyISAM转换为InnoDB,而又不用离线几个小时?
是否有可能(以及如何)在不使应用程序脱机的情况下将巨大的MyISAM表转换为InnoDB。它需要每秒在该表中插入几行,但是可以将其挂起大约2分钟。 显然ALTER TABLE ... engine = innodb无法正常工作。因此,我计划使用innodb引擎创建一个新表并将内容复制到其中。最后,挂起应用程序日志线程和RENAME TABLE。 不幸的是,即使以100行的小批量进行复制,在一段时间后也会产生明显的延迟。 编辑:现有行永远不会更改,此表用于记录。
18 mysql  innodb 

3
我可以更改Oracle数据库的SID吗?
服务器是Oracle Database 11g企业版11.1.0.7.0版-64位 有没有简单快捷的方法来更改服务器上测试数据库的SID? 删除和重新创建数据库是我的一个选择。但我正在寻找需要更少时间的东西。 在客户端tnsnames.ora中分配名称的另一个选项容易出错,因为它们不是集中管理的。 与在SQL Server上删除和创建数据库的时间相比,创建新的Oracle数据库所需的时间过长。进一步在SQL Server上,您可以重命名SQL Server实例。[通常,您重命名运行SQL-Server的服务器,并且在重命名服务器之前也会遇到一些问题]。

8
DBA必读书籍[关闭]
按照目前的情况,这个问题不适合我们的问答形式。我们希望答案得到事实,参考或专业知识的支持,但是这个问题可能会引起辩论,争论,民意调查或扩展讨论。如果您认为此问题可以解决并且可以重新提出,请访问帮助中心以获取指导。 8年前关闭。 这篇文章是社区维基。编辑现有答案以改善此职位。它当前不接受新的答案。 这个问题几乎在任何SE网站中都是必不可少的,以提供基本参考。 一般而言,请仅发布对DBA具有永久价值的书籍。 该职位应该是必读书籍,古典书籍,基础书籍,而不是针对特定产品或过时的书籍。 MS-SQL Server 2008的最新书可能是最新的书,但是它是过时且特定的。 我有真正的兴趣。我基本上是一名程序员,数据库知识对我的形成不利。我知道很多有关数据库的日常工作。
18 learning 

2
CouchDB与MongoDB [关闭]
按照目前的情况,这个问题不适合我们的问答形式。我们希望答案得到事实,参考或专业知识的支持,但是这个问题可能会引起辩论,争论,民意调查或扩展讨论。如果您认为此问题可以解决并且可以重新提出,请访问帮助中心以获取指导。 8年前关闭。 评估面向文档的存储,CouchDB与MongoDB的优缺点是什么?

6
保护数据库密码
查看我所见过的大多数基于PHP / MySQL的网站的结构,似乎很难辨别数据库密码,因为您一定会在某个地方存储设置或配置文件以进行日志记录进入数据库。除了确保对远程请求适当限制数据库特权的基本预防措施之外,我可以在自己的项目中实现哪些可用选项来保护此信息?
18 mysql  security 

2
Row_GUID列的用途是什么?
我一直在探索AdventureWorks2012数据库,并在几个表中看到了Row_GUID。 我的问题分为两部分: 什么时候应该包含Row_GUID列? Row_GUID列的用途和好处是什么?
18 sql-server  uuid 

3
为什么这个连接基数估计值这么大?
我遇到以下查询的基数估计过高: SELECT dm.PRIMARY_ID FROM ( SELECT COALESCE(d1.JOIN_ID, d2.JOIN_ID, d3.JOIN_ID) PRIMARY_ID FROM X_DRIVING_TABLE dt LEFT OUTER JOIN X_DETAIL_1 d1 ON dt.ID = d1.ID LEFT OUTER JOIN X_DETAIL_LINK lnk ON d1.LINK_ID = lnk.LINK_ID LEFT OUTER JOIN X_DETAIL_2 d2 ON dt.ID = d2.ID LEFT OUTER JOIN X_DETAIL_3 d3 ON dt.ID = d3.ID ) …

2
为什么在存储过程中的此查询上不发生SQL注入?
我做了以下存储过程: ALTER PROCEDURE usp_actorBirthdays (@nameString nvarchar(100), @actorgender nvarchar(100)) AS SELECT ActorDOB, ActorName FROM tblActor WHERE ActorName LIKE '%' + @nameString + '%' AND ActorGender = @actorgender 现在,我尝试做这样的事情。也许我做错了,但是我想确保这样的过程可以防止任何SQL注入: EXEC usp_actorBirthdays 'Tom', 'Male; DROP TABLE tblActor' 下图显示了以上在SSMS中执行的SQL,结果正确显示,而不是错误: 顺便说一句,我在查询完成执行后在分号后添加了该部分。然后我再次执行它,但是当我检查表tblActor是否存在时,它仍然存在。难道我做错了什么?还是这真的防注射?我想我也想问的是这样的存储过程是否安全?谢谢。

4
最好的设计从单个列引用多个表?
拟议方案 首先,这是我提议的架构示例,供我在整个帖子中参考: Clothes ---------- ClothesID (PK) INT NOT NULL Name VARCHAR(50) NOT NULL Color VARCHAR(50) NOT NULL Price DECIMAL(5,2) NOT NULL BrandID INT NOT NULL ... Brand_1 -------- ClothesID (FK/PK) int NOT NULL ViewingUrl VARCHAR(50) NOT NULL SomeOtherBrand1SpecificAttr VARCHAR(50) NOT NULL Brand_2 -------- ClothesID (FK/PK) int NOT NULL PhotoUrl VARCHAR(50) …

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.