数据库管理员

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

5
mysqldump错误2013
我已经安装了一个数据库,我想在mysql中进行备份。问题是mysqldump导出“ maia_mail”表失败 # mysqldump -u root -p maia > maia.sql mysqldump: Error 2013: Lost connection to MySQL server during query when dumping table `maia_mail` at row: 15 它运行不到30秒,并且如上所述出现错误。 数据库的总大小为1.3GB,其中maia_mail表为1.0GB 在my.cnf我有这些设置: [mysqld] max_allowed_packet = 1300M [mysqldump] max_allowed_packet = 1300M 请就如何转储数据库提出建议或提供一些指导?

1
EXPLAIN ANALYZE不显示plpgsql函数内部查询的详细信息
我在PostgreSQL 9.3中使用PL / pgSQL函数,内部有几个复杂的查询: create function f1() returns integer as $$ declare event tablename%ROWTYPE; .... .... begin FOR event IN SELECT * FROM tablename WHERE condition LOOP EXECUTE 'SELECT f2(event.columnname)' INTO dummy_return; END LOOP; ... INSERT INTO ... FROM a LEFT JOIN b ... LEFT JOIN c WHERE ... UPDATE …

2
如何衡量或找到创建查询计划的成本?
我有一个典型的情况,参数嗅探会导致“不良”执行计划进入计划缓存,从而导致存储过程的后续执行非常缓慢。我可以使用局部变量OPTIMIZE FOR ... UNKNOWN和来“解决”此问题OPTION(RECOMPILE)。但是,我也可以深入查询并尝试对其进行优化。 我正在尝试确定是否应该:在有限的时间内解决问题,我想知道不这样做的代价。如我所见,如果我坚持使用OPTION(RECOMPILE),最终结果是每次运行查询时都会重新创建查询计划。所以,我想我需要知道: 如何找出创建查询计划的成本是多少? 为了回答我自己的问题,我已经使用Googled进行了查询(例如,使用该查询),并浏览了dm_exec_query_statsDMV列的文档 。我还检查了SSMS中的“实际查询计划”的输出窗口以查找此信息。最后,我已经搜查DBA.SE。这些都没有一个答案。 谁能告诉我?是否可以找到或衡量计划创建所需的时间?

2
分页性能,可自定义排序数百万行
在我们的应用程序中,我们有一个网格,用户可以在该网格上翻阅大量记录(10-20百万)。网格支持在多列(20+)中以升序和降序排序。许多值也不是唯一的,因此该应用程序还按ID进行平局,以确保行始终出现在同一页面上。例如,如果用户要按小部件大小排序(从最大的开始),则应用程序将生成一个查询,看起来像这样: SELECT TOP 30 * -- (Pretend that there is a list of columns here) FROM Test -- WHERE widgetSize > 100 ORDER BY widgetSize DESC, id ASC 该查询需要大约15秒的时间来运行(使用缓存的数据),主要的花费似乎是根据widgetSize对130万行进行排序。为了调优该查询,我发现如果我添加一个WHERE仅限于最大的widgetSizes(在上面的查询中注释)的子句,查询仅需约800ms(所有前50,000个结果中的widget大小均大于100) 。 为什么没有WHERE子句的查询这么慢?我检查了widgetSize列上的统计信息,它们显示前739行的WidgetSize>506。由于仅需要30行,因此SQL Server不能使用此信息来推断它仅需要对具有窗口小部件大小的行进行排序哪个大? 我知道我可以通过在上添加索引来使此特定查询的执行更快widgetSize和id,但是该索引仅在此特定情况下有用,并且在(例如)用户反转排序方向时变得毫无用处。该表包含许多其他列,每个索引都很大(〜200mb),因此我真的负担不起为每种可能的排序顺序添加索引。 有什么方法可以使这些查询查询执行而无需为每个可能的排序顺序添加索引?(用户可以按20列以上的任意列进行排序) 以下脚本创建上表,并用一些代表性数据填充该表。该表比实际表要窄得多,但是仍然显示了我所看到的性能。在我的PC上,使用where子句的查询大约需要200毫秒,而没有where停顿的查询大约需要800毫秒。 警告:运行此脚本后生成的数据库大小约为2Gb。 CREATE TABLE Test ( id INT NOT NULL IDENTITY(1,1) PRIMARY KEY, widgetSize INT NOT …

3
集群列存储索引和外键
我正在使用索引对数据仓库进行性能优化。我对SQL Server 2014相当陌生,Microsoft描述了以下内容: “我们将群集列存储索引视为存储大型数据仓库事实表的标准,并期望在大多数数据仓库场景中使用该索引。由于群集列存储索引是可更新的,因此您的工作负载可以执行大量的插入,更新,和删除操作。” http://msdn.microsoft.com/en-us/library/gg492088.aspx 但是,如果您进一步阅读文档,则会发现存在以下限制和限制: “不能具有唯一性约束,主键约束或外键约束。” 这让我很困惑!出于各种原因(数据完整性,语义层可见的关系...),在数据仓库中具有外键是一种很好的做法(不是强制性的) 因此,Microsoft提倡针对数据仓库方案使用集群列存储索引。但是,它不能处理外键关系?! 我对此是否正确?您还建议其他哪些方法?过去,我在数据仓库场景中使用了非集群列存储索引,并为数据负载进行了删除和重建。但是,SQL Server 2014然后没有为数据仓库添加任何真正的新价值?

4
内存优化表-它们真的很难维护吗?
我正在研究从MS SQL 2012升级到2014的好处。SQL2014的最大卖点之一是内存优化表,该表显然使查询超快。 我发现在内存优化表上有一些限制,例如: 没有(max)大小字段 每行最大〜1KB 没有timestamp领域 没有计算列 无UNIQUE约束 这些都是令人讨厌的东西,但是如果我真的想解决这些问题以获得性能上的好处,我可以制定一个计划。 真正的缺点是您不能运行一条ALTER TABLE语句,并且每次将一个字段添加到索引列表中时,都必须经过这个严格INCLUDE的规定。此外,似乎必须将用户拒之于系统之外,以便对实时DB上的MO表进行任何模式更改。 我发现这完全是令人发指的,以至于我实际上无法相信Microsoft可以在此功能上投入这么多的开发资金,而使它的维护非常不切实际。这使我得出一个结论,就是我一定弄错了方向。我一定对内存优化表有误解,这使我相信维护它们的难度要比实际困难得多。 那么,我误会了什么?您是否使用过MO表?是否有某种秘密的开关或过程使它们易于使用和维护?

1
更改表格时,“无法创建大小为8074的行,该行大于允许的最大行大小为8060”
我正在尝试更改表中的列。现有表如下: CREATE TABLE [dbo].[table]( [id1] [int] NOT NULL, [id2] [int] NOT NULL, [id3] [int] NOT NULL, [name] [nvarchar](255) NOT NULL, [id4] [int] NOT NULL, [xmlData] [xml](CONTENT [dbo].[xml_schema]) NULL, [booleanData1] [bit] NOT NULL, [notes] [varchar](4096) NULL, [id5] [int] NULL, [booleanData2] [bit] NULL, [id6] [int] NULL, CONSTRAINT [PK_table] PRIMARY KEY CLUSTERED ([id1] …

6
查询以比较MySQL中两个表的结构
为了自动执行一个MySQL数据库的备份过程,我想比较两个表的结构(当前版本与旧版本)。 您能想到一个可以比较两个表的查询吗? 这是您可以比较的一些示例表。 CREATE TABLE product_today ( pname VARCHAR(150), price int, PRIMARY KEY (pname) ); CREATE TABLE product_yesterday ( pname VARCHAR(150), price int, PRIMARY KEY (pname) ); CREATE TABLE product_2days_back ( pname VARCHAR(15), price int, PRIMARY KEY (pname) ); 前两个表具有相同的结构。最后一个是不同的。我只需要知道两个表是否具有不同的结构。我对它们之间的差异不感兴趣。

3
真空冷冻vs真空充满
有人可以解释VACUUMPostgreSQL中这些类型之间的区别吗? 我读了文档,但是它只是说FULL锁定表并FREEZE“冻结”元组。我认为是一样的。我错了吗?

1
为什么要在文本列上索引text_pattern_ops?
今天,《七周》中的七个数据库向我介绍了每个操作员的索引。 您可以通过创建text_pattern_ops运算符类别索引来为模式与先前查询匹配的字符串建立索引,只要这些值以小写形式索引即可。 CREATE INDEX moves_title_pattern ON movies ( (lower(title) text_pattern_ops); 我们使用了,text_pattern_ops因为标题是文本类型。如果需要指数VARCHAR处理,字符,或名称,使用相关的OPS: ,varchar_pattern_ops,bpchar_pattern_ops和name_pattern_ops。 我发现该示例确实令人困惑。为什么这样做有用? 如果列是文本类型,在用作搜索值之前,是否会将其他类型(varchar,char,name)强制转换为文本? 该索引的行为与使用默认运算符的索引有何不同? CREATE INDEX moves_title_pattern ON movies (lower(title));

3
从AWS RDS PostgreSQL实例获取WAL文件
我们在Amazon Web Services上有一个Postgres RDS实例。我们启用了自动备份,并且每天拍摄快照。我们想生成一个RDS实例的本地“最新”备份,我们可以对其进行管理。对实例运行pg_dump是不够的,因为我们希望能够将数据库还原到任何时间点。我们希望对RDS和所有WAL文件进行本地备份,因为已进行了备份。问题: 是否可以访问RDS在其备份例程中自动生成的WAL文件和备份?这将是理想的。我想下载它们的本地副本。经过初步调查,我觉得这个问题的答案是“否”。听起来RDS正在S3中存储其WAL文件和备份,但是这使我们无法访问它们。我希望确认。 还有其他方法可以访问RDS实例上发生的事务(WAL文件)吗?我想我们应该能够在EC2上创建Postgres数据库,并将事务从主要的“实时” RDS实例“馈送”到该EC2实例中。一旦我们的EC2实例更新,我们就可以从那里拉WAL文件。但是,多么令人头疼://这种设置可行吗?从我们的RDS实例“馈送”到EC2实例以使其始终保持最新状态的魔力是什么? 谢谢!


2
如何在Postgres中每小时进行增量备份?
尝试每小时对单个Postgres服务器(Win7 64)进行增量备份。 我在中进行以下设置postgresql.conf: max_wal_senders = 2 wal_level = archive archive_mode = on archive_command = 'copy "%p" "c:\\postgres\\foo\\%f"' (重新开始) 我做了一个基本的备份 pg_basebackup -U postgres -D ..\foo -F t -x 它在base.tar文件foo夹中创建了一个大文件,并添加了一些16,384 KB的文件,我认为这些文件是WAL。 我不明白的是为什么WAL foo不变。data/pg_xlog变化中的WAL 。pg不应该复制它们吗?它如何决定这样做? 也许我需要设置archive_timeout=3600? 我已经看到几个站点(pg的邮件列表,bacula的postgres页面)说需要调用pg_start_backup()和pg_stop_backup(),但我相信这些不是必需的。真的吗? 次要问题: WAL多久data/pg_xlog写入一次?是什么触发写操作? 如果我\q在psql中执行一些DML,似乎更新了WAL 。或在pgAdmin中编辑表,然后关闭窗口。我认为它将在提交时编写。 最佳做法?pg_basebackup每周一次?将WAL归档到与PG相同的计算机或远程计算机上吗?

6
不要将事务用于存储过程
我有一个运行一些命令的存储过程。我不希望这些命令被包装在存储过程的事务中。如果第4条命令失败,我希望保留第1条,第2条和第3条而不回滚。 是否可以编写存储过程,使其不能全部作为一个大事务来执行?

2
为什么没有DELETE + REORG可用磁盘空间(DB2)?
在DB2中,我有一个包含大型二进制数据的表。现在,我清除了整个表并运行runstats,reorg,runstats,但是所占用的磁盘空间没有改变。这有什么问题吗? 该表位于自己创建的表空间中,如下所示: CREATE BUFFERPOOL "MY_BP" SIZE 250 AUTOMATIC PAGESIZE 4096; CREATE LARGE TABLESPACE MY_TBS IN DATABASE PARTITION GROUP IBMDEFAULTGROUP PAGESIZE 4096 MANAGED BY AUTOMATIC STORAGE EXTENTSIZE 64 PREFETCHSIZE 64 BUFFERPOOL MY_BP OVERHEAD 10.500000 TRANSFERRATE 0.140000 FILE SYSTEM CACHING; 我删除/重组如下: DELETE FROM MY_TBL RUNSTATS ON TABLE MY_TBL WITH DISTRIBUTION AND DETAILED …

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.