数据库管理员

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

12
DBA如何才能更“程序员友好”?
关于问题“在数据库层中放置应用程序逻辑或将其放置在数据库层中的参数是什么?”的dba.se版本和programmers.se版本的答案和注释。在某些工作场所中,DBA和程序员之间的鸿沟非常明显。 在这样的问题上,DBA有什么不同的方法可以更好地与程序员合作? 我们应该吗: 研究程序员使用的工具和语言,以了解他们面临的困难,尤其是在使用精心设计的数据库时? 鼓励程序员对数据库进行更好的教育,以及在数据库级别拥有业务逻辑的好处? 更改我们定义数据接口的方式-例如通过使用对程序员更友好的事务性API(例如,针对向后兼容性等问题)?


5
为什么DROP DATABASE需要这么长时间?(MySQL)
新的CentOS安装。 我正在运行一个大型数据库(2GB的sql文件)的导入,出现了问题。SSH客户端似乎失去了连接,导入似乎冻结了。我使用另一个窗口登录mysql,导入似乎已死,卡在特定的3M行表上。 所以我尝试了 DROP DATABASE huge_db; 15-20分钟后,什么都没有。在另一个窗口中,我做了: /etc/init.d/mysqld restart DROP DB窗口消息:服务器关闭。然后,我实际上重新启动了物理服务器。 重新登录到mysql,检查并且db仍然存在,运行 DROP DATABASE huge_db; 再一次,我已经等了大约5分钟。 再一次,它是全新的安装。的huge_db是唯一的分贝(除系统DBS其他)。我发誓我已经并且很快就放弃了这么大的数据库,但是也许我错了。 我已经成功删除了数据库。花了大约30分钟。另请注意,当我以为mysqldump导入已死时,我认为我弄错了。终端连接丢失,但是我认为该过程仍在运行。我最有可能杀死了导入中间表(3M行表),并且可能杀死了整个数据库的3/4。令人误解的是,“ top”显示mysql仅使用3%的内存,而它似乎应该使用更多的内存。 删除数据库最终花费了30分钟,因此,再次,我可能不必重新启动服务器,并且可能刚刚等待DROP完成,但是我不知道mysql如何响应获取DROP查询。通过mysqldump导入的同一个数据库。 仍然存在问题,为什么删除所有2GB数据库并删除所有db文件并从information_schema中删除对DB的所有引用时,为什么要花30分钟以上的时间来删除2GB数据库?有什么大不了的?
46 mysql  mysqldump 

3
删除用户postgres的密码要求
我了解到,安装后,PostgreSQL的数据库root用户(postgres)没有密码: postgres=# select usename, passwd is null from pg_shadow; usename | ?column? ----------+---------- postgres | t (1 row) ...,建议您设置以下内容: alter role postgres password '<<very-secret>>'; (然后相应地更新pg_hba.conf文件) 我的问题是:当user不需要密码时,用于恢复到先前情况的SQL是什么postgres? 通常,如何删除任何角色的密码要求?我不是在问如何更改密码,而是要删除密码要求(passwd表中的空列pg_shadow)。

4
SQL Server命令在运行性能比较之前清除缓存
比较两个不同查询的执行时间时,重要的是清除缓存以确保第一个查询的执行不会改变第二个查询的性能。 在Google搜索中,我可以找到以下命令: DBCC FREESYSTEMCACHE DBCC FREESESSIONCACHE DBCC FREEPROCCACHE 实际上,在执行几次查询之后,我的查询比以前花费了更实际的时间。但是,我不确定这是推荐的技术。 最佳做法是什么?

4
功能表现
由于MySQL的背景,存储过程的性能(较旧的文章)和可用性令人怀疑,我正在为我的公司评估PostgreSQL的新产品。 我想做的一件事是将一些应用程序逻辑移到存储过程中,因此我在这里要求在PostgreSQL(9.0)中使用函数时应做的DO和不做的(最佳实践),特别是关于性能陷阱。

3
过多的排序内存授予
为什么这个简单的查询被授予这么多的内存? -- Demo table CREATE TABLE dbo.Test ( TID integer IDENTITY NOT NULL, FilterMe integer NOT NULL, SortMe integer NOT NULL, Unused nvarchar(max) NULL, CONSTRAINT PK_dbo_Test_TID PRIMARY KEY CLUSTERED (TID) ); GO -- 100,000 example rows INSERT dbo.Test WITH (TABLOCKX) (FilterMe, SortMe) SELECT TOP (100 * 1000) CHECKSUM(NEWID()) % 1000, …

1
数据库管理员常用的缩写
数据库管理员中最常用的缩写是什么?它们的相关含义是什么? 这适用于社区以及使用数据库等时搜索常用术语和缩写词含义的人员。



2
now()和current_timestamp之间的区别
在PostgreSQL中,我使用now()and current_timestamp函数,但没有区别: # SELECT now(), current_timestamp; now | now --------------------------------+-------------------------------- 04/20/2014 19:44:27.215557 EDT | 04/20/2014 19:44:27.215557 EDT (1 row) 我想念什么吗?

1
如何获得有效且完整的PostgreSQL数据库备份和测试
我希望我能就如何确保像使用MS SQL Server一样获得完整的Postgres备份获得明确的答案,然后照顾孤立的用户。 从我所读的文章中(可能是错误的),找到一个好的PostgreSQL博客一直是一项艰巨的挑战,因此请随时向我推荐一些博客,我需要弄清楚该应用程序的工作方式,以便我可以信任自己的备份和Slony复制。我有一个开发人员在选择s时通过custom,directory和tarformat 从PgadminIII还原了我的备份,OID但他说其中两个没有加载,tar但只是目录,而不是数据。我现在真的很困惑。 我正在使用PGAdminIII,它具有pg_dump和pg_dumpall选项。我想备份所有需要测试的东西,以便将该数据库还原到某个地方,并确认是的,我们需要的所有数据和备份都正确。最终我想写一个自动恢复脚本,但一次只写一天。 pg_dumpall显然有一个-globals应该备份所有内容的选项,但是的帮助pg_dumpall显示-g, --globals-only dump only global objects, no databases,而不是--globals选项。 我以为pg_dumpall至少会备份外键,但这似乎还是一个“选项”。根据文档,即使pg_dumpall我需要使用一个-o选项来备份外键,我也无法想象我何时不想备份外键,这作为默认选项会更有意义。 我将如何照顾孤立的用户并确认我拥有一切?我想将备份文件实际还原到另一台服务器上,并验证一切正常。如果有人对如何在PostgreSQL中进行真正的备份并还原提出任何建议,我将不胜感激。 我有一台PostgreSQL服务器,但是我仍然无法理解为什么OID默认情况下该应用程序不会备份s!好像有99.9%的时间需要。 更新1: Postgres 文档中提到globals我正在寻找的选项似乎是此版本的默认选项,但仍需要该-o选项。如果有人可以验证或给我一个示例命令,将所有需要的一切还原到其他地方的单个数据库,我将不胜感激。 编辑:被网站要求通过编辑我的问题来显示此问题的独特性。这个问题引起了问题,并弄清了备份中的OID,全局变量和非全局变量之间的差异,以及测试了还原建议以确保备份良好,而不是仅仅备份。根据答案,我能够备份,找出全局变量/ oid,并使用cron作业每晚在Postgres上开始测试还原过程。谢谢您的帮助!

4
视图是否对PostgreSQL的性能有害?
以下是关于数据库设计的书的摘录(数据库设计ISBN:0-7645-7490-6): 使用视图的危险是针对视图过滤查询,期望读取很大表的很小部分。应该在视图内完成所有筛选,因为在视图中的查询完成执行之后,将对视图本身进行任何筛选。视图通常对于加快开发过程很有用,但是从长远来看,它可能会完全破坏数据库性能。 以下是PostgreSQL 9.5文档的摘录: 充分利用视图是良好的SQL数据库设计的关键方面。通过视图,您可以在一致的接口后面封装表结构的详细信息,该表结构的详细信息可能会随着应用程序的发展而变化。 这两个来源似乎相互矛盾(“不使用视图设计”与“不使用视图设计”)。 但是,在PG视图中是使用规则系统实现的。因此,可能(这是我的问题),针对视图的任何筛选都将重写为视图中的筛选器,从而导致针对基础表的单个查询执行。 我的解释正确吗,PG将WHERE子句组合进了视图?还是单独运行它们?有没有简短,自成体系,正确(可编译)的示例?

3
mysql中On Delete Cascade和On Update Cascade之间的区别
我在MySQL数据库中有两个表parent,child。我试图基于父表将外键引用添加到我的子表中。有没有之间的任何显著差异ON UPDATE CASCADE和ON DELETE CASCADE 我的父母表 CREATE TABLE parent ( id INT NOT NULL, PRIMARY KEY (id) ) ENGINE=INNODB; 我的问题是:以下sql查询之间有什么区别。 ON DELETE CASCADE CREATE TABLE child ( id INT, parent_id INT, INDEX par_ind (parent_id), FOREIGN KEY (parent_id) REFERENCES parent(id) ON DELETE CASCADE ) ENGINE=INNODB; ON UPDATE CASCADE CREATE TABLE child …

5
我无法通过IP地址连接到服务器SQL数据库
我已经安装了运行Windows Server 2008的服务器,并安装了SQL Server 2008 Express。 我可以通过连接到计算机的SQL Server Express数据库MACHINENAME/SQLEXPRESS。 但是,当我们使用IP地址通过任何软件或脚本进行连接时,将不允许连接。 我努力了: 关闭防火墙。 允许SQL数据库的远程连接。 在“ SQL配置”中启用TCP / IP。 当我们尝试通过软件“ SQL Server Management Studio”进行连接时,会收到以下消息: 错误信息: 建立与服务器的连接时发生错误。连接到SQL Server 2005时,此故障可能是由于以下事实导致的:在默认设置下,SQL Server不允许远程连接。(提供程序:TCP提供程序,错误:0-无法建立连接,因为目标计算机主动拒绝了它。)(Microsoft SQL Server,错误:10061) 已成功与服务器建立连接,但是在登录过程中发生了错误。(提供程序:TCP提供程序,错误:0-主机中的软件中止了已建立的连接。)(Microsoft SQL Server,错误:10053) 您能否在空闲时间让我知道,以便我们看看,因为我似乎已经知道在哪里,所以我根据UK Fast发送给我的一些信息修改了详细信息,但他们说“不在支持范围内” ,因此他们无济于事。 我期待着您的回音。

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.