数据库管理员

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

1
MySQL open_files_limit-无法更改此变量
我遇到了问题,因为我open_files_limit的mysql仅适用于1024。 Centos 7,MySQL Community Server 5.6.22-日志 实际上,这是WHM服务器专用于mysql的vps(远程mysql),但这不重要。 配置文件 my.cnf: [mysqld] open_files_limit = 100000 open-files-limit = 100000 #I've read that the dashes are required on older versions, but I threw it in anyway. innodb_buffer_pool_size = 600M ... # and the same for mysqld_safe [mysqld_safe] open_files_limit = 100000 open-files-limit = 100000 ... …
17 mysql 

2
INSERT语句中的行值表达式数量超过了允许的最大1000行值数量
一个INSERT INTO脚本编写如下。 INSERT INTO tableName (Column1, Column2,....) VALUES (value1, Value2,...), (value1, Value2,...),.... 以下是我们在插入语句上面进行解析时遇到的错误 消息10738,级别15,状态1,行1007 INSERT语句中行值表达式的数量超过了允许的最大1000行值。 我的简单问题是,我们可以更改1000个值的限制吗?



8
避免使用较大ID值的原因
我们正在开发一个尚不为用户所用的Web应用程序。我的老板注意到,即使表中只有不到100条记录,新创建的记录的ID也超过10000。她认为Web界面出于某种原因会创建比实际记录多100倍的临时记录(并删除它们),并且这可能导致我们在发布后的几个月内超出范围。 我不认为她对身份证通货膨胀的原因是正确的(可以回答这个问题的同事正在休假,所以我们不确定),但是我们假设她是。她说,她不想使用bigint列,并且希望我们停止自动递增ID列,并编写选择第一个“未使用”整数并将其用作ID的服务器端代码。 我是计算机科学专业的研究生,几乎没有实践经验,担任初级开发人员。她在管理我们组织的所有数据库以及设计大多数数据库方面具有多年的经验。我认为她在这种情况下是不正确的,bigint ID不用担心,而且模仿DBMS功能的味道像是反模式。但是我不相信我的判断。 支持和反对每个立场的理由是什么?如果我们使用bigint会发生什么不好的事情,以及重新发明轮子自动递增功能的危险是什么?有没有比任何一个都更好的第三种解决方案?她为什么要避免身份证面值膨胀的原因是什么?我也有兴趣了解实用的原因-也许bigint ID在理论上起作用,但在实践中引起头痛? 该应用程序不应处理大量数据。我怀疑在未来几年内是否会达到10,000条实际记录。 如果有什么不同,我们正在使用Microsoft SQL Server。该应用程序用C#编写,并使用Linq进行SQL。 更新资料 谢谢,我发现现有的答案和评论很有趣。但恐怕您误解了我的问题,因此它们包含了我想知道的内容。 我并不真正担心ID高的真正原因。如果我们自己找不到它,我可以问一个不同的问题。我感兴趣的是了解这种情况下的决策过程。为此,请假定应用程序每天将写入1000条记录,然后删除其中的9999条。我几乎可以肯定不是这种情况,但这就是我老板在提出要求时所坚信的。因此,在这些假设的情况下,使用bigint或编写自己的将分配ID的代码(以重新使用已删除记录的ID以确保没有间隙的方式)的利弊是什么? 出于实际原因,我强烈怀疑这是因为我们曾经编写了从另一个数据库导入数据的代码,作为可以在以后进行一定程度迁移的概念证明。我认为我的同事实际上在导入过程中创建了数千条记录,后来又删除了它们。我必须确认是否确实如此,但如果确实如此,则甚至无需采取任何措施。

2
我如何知道SQL Server实际使用了多少个Cores?
我有两台运行SQL Server的服务器。 服务器1:SQL Server 2008 R2 Express(4核) 服务器2:SQL Server 2012 Developer Edition(8核) 据我所知,SQL Server 2008 R2 Express应该仅使用一个内核。 SQL Server 2012 Developer版本应使用所有8个核心。 但是,如果我在SQL Server 2008 R2 Express上的SQL查询中运行以下命令,它将显示4个核心。 select scheduler_id, cpu_id, status, is_online from sys.dm_os_schedulers where status = 'VISIBLE ONLINE' 我是否使用正确的命令来衡量使用情况?

2
使用AlwaysOn可用性组时缩小事务日志
我们正在使用AlwaysOn Availability GroupSQL Server 2012的功能。每天在辅助数据库上进行常规的完整数据库备份和事务日志备份。 我在这里已经阅读了在主副本或辅助副本上执行事务日志备份的操作,会将这两个副本的事务日志标记为可重用。无论如何,事务日志备份的大小很大,可以使用收缩文件来减小它: 我已在本地还原数据库并执行收缩操作。日志文件大小减少到160 MB。 我的问题是我应该在哪个数据库上对事务日志文件(主,次或两者)执行收缩操作? 我猜过去几年没有备份日志文件,因此它是如此之大。执行中,DBCC SQLPERF (LOGSPACE)我可以看到仅使用0.06%了该文件-对于我而言,保留如此大的日志文件毫无意义。在[sys].[database_files]我检查其max_size设置为-1与growth对65536,所以我想,当它需要更多的空间,它会得到。无论如何,为了防止将来的增长,我可以将其缩小到例如5%。我试图找到一些确认,我认为这样做不是一个坏主意。 实际上,备份(在数据库和日志文件上)仅在辅助数据库上执行,因此对它们执行收缩文件会更容易,但是主日志文件的大小也会减少吗?

2
将VARCHAR转换为VARBINARY
我一直将昂贵的运行查询及其查询计划记录在一个表中,以使我们能够监视性能趋势并确定需要优化的领域。 但是,到了查询计划占用太多空间的地步(因为我们针对每个查询存储整个计划)。 因此,我试图通过将QueryPlanHash和QueryPlan提取到另一个表来规范化现有数据。 CREATE TABLE QueryPlans ( QueryPlanHash VARBINARY(25), QueryPlan XML, CONSTRAINT PK_QueryPlans PRIMARY KEY ( QueryPlanHash ) ); 因为query_plan_hashin 的定义sys.dm_exec_query_stats是一个二进制字段(并且我将定期插入新数据),所以我VARBINARY在新表中使用了该数据类型。 但是,下面的插入失败... INSERT INTO QueryPlans ( QueryPlanHash, QueryPlan ) SELECT queryplanhash, queryplan FROM ( SELECT p.value('(./@QueryPlanHash)[1]', 'varchar(20)') queryplanhash, QueryPlan, ROW_NUMBER() OVER (PARTITION BY p.value('(./@QueryPlanHash)[1]', 'varchar(20)') ORDER BY DateRecorded) rownum FROM …


1
有一个psql等效于bash的反向搜索历史吗?
我非常喜欢bash的反向搜索历史记录(Cr)(命令行功能): 从当前行开始向后搜索,并根据需要在历史记录中向上移动。这是一个增量搜索。 按下control-r时bash,我得到以下信息: (reverse-i-search)`': 而且,我可以键入以前执行的命令的字符,并根据需要查找内容。如果输入有误,我可以输入control-h以删除一个字符(等于backspace)。 此命令行功能使引用以前执行的命令变得非常容易。我想知道是否存在这样的能力psql。我发现依靠正义control-p和正义是极其低效的control-n。 对于它的价值,我正在使用PostgreSQL 9.3.1 on x86_64-apple-darwin13.0.0, compiled by Apple LLVM version 5.0 (clang-500.2.79) (based on LLVM 3.3svn), 64-bit-通过Postgres.app获得。

1
从Amazon RDS获取Postgres快照
我找不到一种简单的方法来获取我的Amazon RDS postgres实例进行的夜间备份的副本,因此可以将其还原到本地计算机上以供使用。 现在,当我需要一个副本时,我正在执行pg_dump,但是能够下载这些快照会更好(并且可能更快)。这不可能吗?

5
如何在行之间递归查找90天过去的间隔
在我的C#家庭世界中,这是一项微不足道的任务,但是我还没有在SQL中实现它,而是希望解决基于集合的问题(没有游标)。结果集应来自这样的查询。 SELECT SomeId, MyDate, dbo.udfLastHitRecursive(param1, param2, MyDate) as 'Qualifying' FROM T 应该如何运作 我将这三个参数发送到UDF中。 UDF在内部使用参数从视图中获取相关的<= 90天的旧行。 UDF遍历“ MyDate”并返回1(如果应将其包括在总计计算中)。 如果不应该,则返回0。此处命名为“ qualifying”。 udf会做什么 按日期顺序列出行。计算行之间的天数。结果集中的第一行默认为Hit =1。如果差异最大为90,则-传递到下一行,直到间隔总和为90天(必须经过90天)。达到时,将Hit设置为1并将间隙重置为0代替从结果中删除行也将起作用。 |(column by udf, which not work yet) Date Calc_date MaxDiff | Qualifying 2014-01-01 11:00 2014-01-01 0 | 1 2014-01-03 10:00 2014-01-01 2 | 0 2014-01-04 09:30 2014-01-03 1 …

7
启动MySQL时“找不到文件mysql / plugin.frm”
当我启动MySQL服务器时,出现以下错误: /usr/libexec/mysqld: Can't find file: './mysql/plugin.frm' (errno: 13) [ERROR] Can't open the mysql.plugin table. Please run mysql_upgrade to create it. InnoDB: The error means mysqld does not have the access rights to InnoDB: the directory. InnoDB: File name ./ibdata1 InnoDB: File operation call: 'create'. InnoDB: Cannot continue operation. 我已经运行mysql_upgrade过重建它,并且它可以重建。在此之前,我删除并安装了MySQL。但是,当我尝试重新启动时,出现相同的错误。我确信这不是权限问题,因为所有文件和目录都是由mysql用户创建的。 您能建议我如何解决此错误吗?
17 mysql 

3
如何在mysql master-slave中确定master
我正在设置MySQL主从复制,并且试图找出如何处理故障转移情况,在这种情况下我会将从提升为主(万一发生故障)。 我的应用程序服务器需要将所有写入都定向到当前主服务器,但是由于两个数据库服务器位于不同物理位置的完全不同的子网上,因此我无法在主服务器和从服务器之间使用服务器级别的HA(心跳,保持活动状态)。 我认为这是我需要在应用程序级别处理的事情。我可以查询两台服务器并询问哪一台是主服务器,然后对那台服务器执行所有查询。 MySQL中是否有查询以查看当前服务器是否是主从副本中的主服务器?

5
一次将多个数据库从C:移动到D:
我有带有323个数据库的SQL Server 2008 R2,在我的C:驱动器(快速SSD)上消耗了大约14 GB。 因为我想在C:驱动器上回收一些空间,所以我想将它们移动到D:驱动器上。 我已经找到此MSDN文章,但这似乎是仅移动一个数据库的过程。 是否有自动方式或脚本一次移动所有数据库?

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.