数据库管理员

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

2
在MySQL 5.5中具有类似PostgreSQL的部分索引
我有大数据,一次只能选择一小段数据,因此选择总是按顺序进行的。我正在尝试针对此类目的在MySQL中实现像部分索引这样的PostgreSQL。我不确定部分唯一约束是否与我想要的约束相同。 PostgreSQL 9.4中的代码 CREATE UNIQUE INDEX dir_events ON events (measurement_id) USING btree (eventBody) WHERE is_active; 在MySQL中尝试ypercube的部分索引 CREATE UNIQUE INDEX dir_events [index_type] -- TODO what here? ON events (measurement_id, is_active) [index_type] -- TODO what here? 如何在MySQL 5.5或类似版本中创建类似PostgreSQL的部分索引?
9 mysql  index 


6
Redshift中的尺寸建模和ETL
我一直在研究Amazon的Redshift数据库,以作为将来替换我们的数据仓库的可能。我的经验一直是使用维度建模和Ralph Kimball的方法,因此看到Redshift不支持自动递增列的串行数据类型等功能有点奇怪。 但是,AWS Big Data博客最近有一篇博客文章,介绍如何针对星型架构优化Redshift:https : //blogs.aws.amazon.com/bigdata/post/Tx1WZP38ERPGK5K/Optimizing-for-Star-Schemas和交错排序在Amazon Redshift上 我的问题是在Redshift中加载星型架构的最佳实践是什么?我在Redshift的任何文档中都找不到答案。 我倾向于将文件从S3导入到临时表中,然后在插入目标表之前使用SQL进行诸如查找和生成代理键之类的转换。 这是别人目前在做什么吗?有没有值得花这笔钱的ETL工具来简化这一过程?

3
PostgreSQL查询中未知的返回类型
以下查询有效: SELECT a, b FROM unnest(ARRAY[(1,2), (3,4)]) AS t(a integer, b integer); a b _ _ 1 2 3 2 但是,我无法使用其他列类型,例如varchar(255): SELECT a, b FROM unnest(ARRAY[(1,'hello'), (3,'world')]) AS t(a integer, b varchar(255)); ERROR: 42804: function return row and query-specified return row do not match DETAIL: Returned type unkown at ordinal …

2
在Postgres 9.3中实现json_object_agg()
我觉得我需要json_object_agg()Postgres 9.4 的功能,但现在无法从9.3升级。有什么方法可以完成我在9.3版中想要的工作吗?这是我的情况。我有一个click_activity看起来像的数据表 user | offer | clicks -----|-------|-------- fred |coupons| 3 fred |cars | 1 john |coupons| 2 但是我想把它变成这样:(汇总每个用户的活动) user | activity -----|---------- fred | {"coupons": 3, "cars": 1} john | {"coupons": 2} 我认为json_object_agg()Postgres 9.4 的功能可以完美地做到这一点,我只需要调用 select user, json_object_agg(offer, clicks) from click_activity group by 1 9.3中有办法吗?谢谢!

1
为什么我们不能有多个级联路径?
您会看到有关多个级联路径的许多问题被问到。例如: /programming/851625/foreign-key-constraint-may-cause-cycles-or-multiple-cascade-paths /programming/6065501/multiple-cascade-delete-path-in-many-many-relationship-ef-4-1 /programming/27613117/introducing-foreign-key-constraint-may-cause-cycles-or-multiple-cascade-paths-s 然而,从我所看到和理解,这是完全确定要删除子记录很多,而不仅仅是一个的相关主记录的删除的状态。 虽然有一个问题是说SQL Server试图通过防止这种情况发生来确保安全,但我真的不明白,如果我们有多个级联路径,可能会出什么问题?它有什么问题可以使其变得安全? 我希望有人可以用简单明了的方式向我解释,最好使用示例说明在多个级联路径的情况下可能出问题的地方。

2
在分区少量数据时获得切合实际的查询计划
我们正在使用分区来减少由于锁定而导致的OLTP系统体验受阻的程度,该分区方案可根据客户ID将工作表分为100个分区。但是,在测试过程中,我们发现执行计划没有按照我们期望的方式选择。 该测试方案是一个具有300,000个联系记录的单个客户(每个联系人的数据被拆分为两个表),所有记录都位于一个分区中,并通过查询在该客户分区中查找500条特定的行。您可能希望像哈希匹配之类的东西会在计划的早期消除不必要的299,500,但是SQL Server似乎选择选择整个表的记录计数并将其平均分配给所有分区,然后再考虑如何它要处理的记录很多,这导致它选择了一个嵌套循环,并在此过程的后半段消除了不需要的记录。通常,此时间是针对非分区表的相同查询的9倍。 奇怪的是,在选择中添加一个选项(重新编译)给出了一个明智的计划,但是我不知为何会有所作为。这不是存储过程,在测试过程中,我们会在每次测试运行之前清除过程缓存。 当所涉及的表未分区时,即,由于估计的行数与实际的行数匹配,因此每次都选择一个适当的计划时,不会出现此行为 任何对此行为的见解将不胜感激。 模式设置: USE [Scratch] GO CREATE SCHEMA part GO CREATE PARTITION FUNCTION [ContactPartition](smallint) AS RANGE LEFT FOR VALUES (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, …

2
为什么mysql密码哈希在内部用星号(星号)保存?
我正在阅读一些mysql内部知识,当通过我的mysqlshell中的mysql.user表时,我得到了 mysql> select * from mysql.user limit 1 \G *************************** 1. row *************************** Host: localhost User: root Password: *81F5E21E35407D884A6CD4A731AEBFB6AF209E1B 密码显然是散列的,但是为什么要以星号(星号)开头?

4
我需要为什么我们不应该在域控制器上安装SQL Server的原因
我是一家小型公司的系统管理员。现在,我们考虑为该公司推出Windows Server 2008 R2。我们计划实施Active Directory。我们还想将RDMS从SQL Server 2000升级到SQL Server 2014。 由于组织规模的原因,我们只能买一台服务器,因此我们计划在同一台计算机上同时实现AD和SQL Server 2014。但是,Microsoft建议不要在域控制器上安装SQL Server 2014。 我已经检查了原因,但是我不明白问题出在哪里,因此如果有人在下面回答我的问题,那真的很有帮助。 您不能在本地服务帐户下的域控制器上运行SQL Server服务。→如果我们在使用域用户帐户的域控制器上运行SQL Server,会发生什么情况? 在计算机上安装SQL Server之后,不能将计算机从域成员更改为域控制器。在将主机更改为域控制器之前,必须先卸载SQL Server。→我们计划在安装SQL Server 2014之前将服务器提升为域控制器,并且不打算将其降级为成员服务器,因为这是我们唯一的服务器。我们的计划错了吗? 在计算机上安装SQL Server之后,不能将计算机从域控制器更改为域成员。在将主机更改为域成员之前,必须先卸载SQL Server。→我们不打算取消升级为成员服务器,因为这是我们唯一的服务器。我们的计划错了吗? 如果群集节点是域控制器,则不支持SQL Server故障转移群集实例。→我们不打算安装故障转移群集,因此我们认为这不是问题。我们错了吗? SQL Server安装程序无法在只读域控制器上创建安全组或设置SQL Server服务帐户。在这种情况下,安装程序将失败。→因为我们只有一台服务器,所以它永远不会成为只读域控制器,因此我们认为这不是问题。我们错了吗? 实际上,我想如果清除(1),就可以在域控制器上安装SQL Server 2014。 感谢您阅读所有句子。我希望有人给我们答案。

1
是否存在用于远程访问PostgreSQL数据库的超时选项?
我正在通过 pgAdmin III在远程PostgreSQL数据库上工作。经过很短的一段时间(例如10-15分钟)之后,却没有在pgAdmin中进行任何操作,连接将自动失效。因此,我收到一条错误消息,询问是否要重新连接。这大约需要10秒。并且数据库结构崩溃了,所以我必须重新打开之前打开的架构。 有没有办法在某个地方更改超时参数,以防止连接较长时间过期?

4
监视SQL Server数据文件中的可用空间
我已手动将mdf / ndf文件调整为较大的大小,以避免在SQL Server数据库上进行自动增长操作。由于文件较大,因此磁盘分区上的可用空间非常小,系统管理员不断提醒我空间不足。 由于我调整了它们的大小,因此数据文件中有很多可用空间,但是从文件大小/磁盘可用空间来看,人们不会注意到它。 如何监视数据文件的实际使用百分比?我更喜欢使用perfmon计数器。我很担心,当文件真正用完空间时,SQL Server将无法分配足够的空间,并且将崩溃。

1
在PostgreSQL中使用许多模式而不是仅使用一种模式的利弊?
对于拥有30万个帐户(并且还在不断增长)的大型SAAS应用程序(由PostgreSql 9.4支持),每个帐户使用模式对数据进行分区与将所有数据置于一个模式中并使用外键进行数据交换的利弊是什么?在查询中将其分区? 我知道过去使用许多模式时pg_dump的速度很慢,但不确定今天是否是如此。我也知道数据库结构的任何更改都必须在所有模式上进行。而且我知道,从正面来看,将模式从一台物理服务器移动到另一台物理服务器很容易,并且可以从备份中还原模式,更不用说以这种方式分区数据了。 那么,我缺少哪些利弊?

2
数据库何时脱机
我试图找到一种方法来弄清何时将几个sql数据库脱机。 我检查了日志,但找不到任何此类信息,而且没有启用默认跟踪。 我刚刚得到的信息是,以前有一个DBA使该任务脱机,但是没有电子邮件或书面通讯。 我们可以找到有关此信息吗? 请提出建议,谢谢!

1
如何在PostgresQL表中删除未命名的检查约束?
我创建了一个PostgresQL表,但在其中一列上添加了一个未命名的检查约束: CREATE TABLE FOO ( id serial primary key, price_range smallint CHECK (price_range > 0), url varchar(255) ); 现在,我想删除此约束,但是我不知道如何。典型的ALTER TABLE ... DROP CONSTRAINT ...需要一个,constraint_name但我没有。 我知道这里有一个答案,但是当我尝试按照那里的答案来确定检查约束的名称时: SELECT * FROM information_schema.constraint_table_usage WHERE table_name = 'your_table' 我得到的只是一个约束,其约束条件constraint_name是foo pkey指主键约束,而不是我对该price列的检查。因此,除非我丢失了某些内容,否则该答案无济于事。 如何在不丢失任何数据的情况下取消此约束? 谢谢!

2
授予对视图的权限,拒绝对表的选择
我有一个MySQL用户,我希望它仅查看所需的视图,而不查看数据库中的任何其他表。我仅在某些视图上授予此用户权限,如下所示: GRANT SHOW VIEW ON `myDatabase`.`awesome_view` TO 'thisUser'@'%' 如果我show grants;发表声明,我只能按预期看到此权限。但是,我希望该用户仅查询视图,而不查询与这些视图相关的表,但是我找不到解决方法。似乎是如果我希望用户在视图上进行选择,则还必须为表授予选择权,否则我错了吗? 如果我select在其余表中拒绝该语句,并且在命令行中尝试进行选择,则会得到以下信息: SELECT * FROM myDatabase.fordibenForYouTable; ERROR 1142 (42000): SELECT command denied to user 'thisUser'@'localhost' for table 'fordibenForYouTable' 那确实是我想要的,但是如果选择视图数据,我也会被拒绝。 有没有一种方法可以让用户只使用视图而不是表?

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.