数据库管理员

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


5
如何在Postgresql中有效地将数百万行从一个表复制到另一个表?
我有两个数据库表。其中包含数亿条记录。让我们称之为那个history。另一条是每天计算的,我想将其所有记录复制到history一条中。 我所做的就是跑步: INSERT INTO history SELECT * FROM daily 它成功完成了一段时间,但随着记录数量的不断增长,它开始变得越来越慢。现在,我大约有200万条记录需要通过一次操作从daily到进行复制,history而完成它花费的时间太长。 是否有另一种更有效的方法将数据从一个表复制到另一个表?
36 postgresql 

5
为什么SQL Server消耗更多的服务器内存?
SQL Server占用了我的服务器RAM的87.5%。最近,这引起了许多性能瓶颈,例如速度缓慢。我研究了这个问题。我可以在互联网上找到的一种常见解决方案是设置SQL Server的最大限制。这样做已经取得了很大的进步。我想知道为什么如果未设置最大内存值,为什么SQL Server会继续消耗资源

6
“存储过程”和“存储函数”之间有什么区别?
因此,该问题的评论提到,PostgreSQL中的“存储过程”和“存储功能”略有不同。 该评论链接到Wikipedia文章,但其中一些似乎不适用(例如,可以在SELECT声明中使用它们)。 该语法本身似乎有点混乱: CREATE FUNCTION emp_stamp() RETURNS trigger AS $emp_stamp$ BEGIN [...] END; $emp_stamp$ LANGUAGE plpgsql; CREATE TRIGGER emp_stamp BEFORE INSERT OR UPDATE ON emp FOR EACH ROW EXECUTE PROCEDURE emp_stamp(); 您创建了一个,FUNCTION但将其称为PROCEDURE。 那么这两者有什么区别?

10
从.frm和.ibd文件还原表?
我以前已经保存了/ var / lib / mysql / ddms目录的副本(“ ddms”是架构名称)。现在,我通过运行在新安装的Ubuntu 10.04.3 LTS上安装了新的MySQL apt-get install mysql-server,我相信已经安装了5.1版。在/ var / lib / mysql下复制ddms目录后,它的某些表可以正常工作,这些表具有三个文件的关联集:.frm文件,.MYD文件和.MYI文件。 但是,有两个表具有不同的文件集:.frm文件和.ibd文件。这两个表未显示在phpMyAdmin的表列表中。当我查看错误日志时,它说: [ERROR] Cannot find or open table ddms/dictionary_item from the internal data dictionary of InnoDB though the .frm file for the table exists. Maybe you have deleted and recreated InnoDB data …
36 mysql  innodb 


1
SQL Server:如何跟踪CREATE INDEX命令的进度?
SQL Server 2014标准版 我已经读过dm_exec_requests中的percent_complete不适用于CREATE INDEX,实际上,percent_complete坚持为0。所以这无济于事。 我目前使用下面的方法,该方法至少向我展示了运动(未阻止创建索引)。但是我不知道我是整个过程的%10还是%99。 我尝试了这里描述的方法:https : //dba.stackexchange.com/a/102545/6229, 但是它显示出明显的错误完成时间(对于60分钟以上的过程,它基本上显示“现在”,即我进入了10分钟) ) 我如何获得线索? SELECT percent_complete, estimated_completion_time, reads, writes, logical_reads, text_size, * FROM sys.dm_exec_requests AS r WHERE r.session_id <> @@SPID AND r.session_id = 58

2
在SQL Server中,对存储过程进行分组的目的是什么?
我必须处理的最困惑的问题之一与存储过程组有关。给定一个存储过程,usp_DoSomethingAwesome我可以通过调用它在另一个组中创建该proc usp_DoSomethingAwesome;2。 我在对一些系统生成的插入,更新和删除复制存储过程引起的某些复制问题(发布者:SQL 2000 Ent。,Dist / Sub:2008 R2 Ent)进行故障排除时发现了这一点。 具有这种“分组”能力的目的/思想是什么?

4
如何找出PostgreSQL查询的有效距离?
我对我的SELECT ... INTO查询实际上将处理多少行有一个不错的想法(例如,我知道将实现多少行)。 我知道Postgres不会告诉我百分比完整性,有没有办法(深埋在日志,系统表或其他方式中)我可以找出有多少行已被泵送到目标表中或已被SELECT查询读取?
35 postgresql 


1
删除与截断
我试图对DELETE和TRUNCATE命令之间的差异有更深入的了解。我对内部结构的理解大致如下: DELETE->数据库引擎从相关数据页和输入该行的所有索引页中查找并删除该行。因此,索引越多,删除时间越长。 TRUNCATE ->会简单地整体删除表的所有数据页,这使它成为删除表内容的更有效的选择。 假设以上正确(如果不正确,请纠正我): 不同的恢复模式如何影响每个语句?如果有任何作用 删除时,是扫描所有索引还是仅扫描行所在的索引?我假设所有索引都已扫描(而不查找?) 如何复制命令?SQL命令是否在每个订阅服务器上发送和处理?还是MSSQL比这更聪明?

2
检查是否存在EXISTS胜过COUNT个!……不?
我经常阅读何时必须检查行是否存在的情况,应该始终使用EXISTS而不是COUNT来完成。 但是,在最近的几种情况下,我测量了使用count时的性能提升。 模式如下: LEFT JOIN ( SELECT someID , COUNT(*) FROM someTable GROUP BY someID ) AS Alias ON ( Alias.someID = mainTable.ID ) 我不熟悉SQL Server内部“发生什么”的方法,因此我想知道EXISTS是否存在未预料到的缺陷,该缺陷对我所做的测量完全有意义(EXISTS是RBAR吗?!)。 您对此现象有一些解释吗? 编辑: 这是您可以运行的完整脚本: SET NOCOUNT ON SET STATISTICS IO OFF DECLARE @tmp1 TABLE ( ID INT UNIQUE ) DECLARE @tmp2 TABLE ( ID INT …

2
TOP如何(以及为什么)影响执行计划?
对于我要优化的中等复杂查询,我注意到删除该TOP n子句会更改执行计划。我可能已经猜到,当查询中包含TOP n数据库引擎时,该查询将忽略该TOP子句而运行,然后最后仅将结果集缩减为所请求的n行。图形化的执行计划似乎表明是这种情况,这是TOP“最后一步”。但似乎还有更多的事情正在进行。 我的问题是,TOP n子句如何(以及为什么)影响查询的执行计划? 这是我的情况的简化版本: 该查询匹配两个表A和B中的行。 如果没有该TOP子句,优化器估计表A将有19k行,表B将有46k行。对于A,返回的实际行数是16k,对于B,返回的行数是13k。散列匹配用于将两个结果集连接到a总共69行(然后应用排序)。这个查询很快发生。 当我添加TOP 1001优化器时,不使用哈希匹配;相反,它首先对表A的结果进行排序(相同的估计值/实际值为19k / 16k),并针对表B进行嵌套循环。表B的估计行数现在为1,奇怪的是,TOP n直接影响表B 针对B的估计执行次数(索引查找)-始终为2n + 1,在我的情况下为2003。如果我更改,则此估计值也会相应更改TOP n。当然,由于这是嵌套联接,因此实际执行次数为16k(表A中的行数),这会使查询速度变慢。 实际情况要复杂一些,但这捕获了基本思想/行为。使用索引查找来搜索两个表。这是SQL Server 2008 R2企业版。

4
如何在Mysql中更改VIEW的DEFINER?
当我运行mysqldump时,出现错误: mysqldump: Got error: 1449: The user specified as a definer ('root'@'foobar') does not exist when using LOCK TABLES 这是有道理的,因为foobar不再有旧机器。 如何将所有表的定义器更改为'root'@'localhost'?

4
表格定义中的列顺序重要吗?
定义表时,按目的对逻辑组中的列和组本身进行排序很有帮助。表中列的逻辑顺序将含义传达给开发人员,并且是一个良好样式的元素。 很清楚 但是,尚不清楚的是,表中列的逻辑顺序是否会对存储层的物理顺序有任何影响,或者是否有其他可能影响的影响。 除了对样式的影响之外,列顺序是否重要? 关于堆栈溢出有一个与此有关的问题,但是它缺乏权威性的答案。

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.