数据库管理员

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


8
IntelliSense不起作用,但已启用
事实证明,这个问题确实很棘手(而且很烦人)。 在SQL Server Management Studio 2008中,直到几天前,我的IntelliSense仍然运行良好。然后突然停了下来。在工具栏菜单上启用的图标,在“工具”->“选项”->“文本编辑器”->“ T-SQL”->“ IntelliSense”下,它表示已在此处启用。 我尝试使用Ctrl-Shft-R刷新IntelliSense缓存,但这也不起作用。 有什么想法可以解决我的IntelliSense以及我需要做些什么才能取回它?



3
字符与整数主键
我正在设计一个包含多个查找表的数据库,其中包含主要实体的可能属性。我正在考虑使用4或5个字符的键来标识这些查找值,而不是自动递增的整数,这样当我将这些属性ID存储在主表中时,我会看到有意义的值,而不仅仅是随机数。 使用字符字段作为主键而不是整数对性能有何影响? 如果这很重要,我正在使用MySQL。 [编辑] 这些查找表具有很少添加的新记录。它们是手动维护的,基于字符的键也是手动创建的。这是一个例子: CUISINES ID Description ----- -------------- CHNSE Chinese ITALN Italian MXICN Mexican

5
为什么将int用作查找表的主键?
我想知道为什么我应该使用int作为查找表的主键,而不是仅使用lookup值作为主键(在大多数情况下为字符串)。 我知道,如果将nvarchar(50)而不是int链接到具有许多记录的表,则会使用更多空间。 另一方面,直接使用查找值基本上可以节省我们进行连接的时间。我可以想象,如果始终需要加入,这将节省很多钱(我们正在开发一个Web应用程序,因此这很重要)。 除了将int主键用作“标准操作”以外,还有什么好处?

3
重复列以加快查询速度?
标题没有太大意义,但我想这个问题的标题更好。 我有下表 专案 ID 名称 顾客 ID id_project 名称 付款方式 ID id_customer 日期 和 当用户进入系统时,他将有权访问某个项目。现在,我要列出该项目的所有付款,这应该很简单: SELECT FROM payments where id_customer in (SELECT id from customers where id_project = 5) 我的问题是:用这种方式向付款表添加id_project列是否更好,这将使查询更容易,更快捷。


3
配置PostgreSQL的写入性能
我的PostgreSQL服务器之一托管着几个(1-3)数据库,这些数据库接收恒定的数据流。数据不是特别结构化的,它等于当前时间以及该特定时刻的各种观测数据。数据速率相当高;对于一个数据库,它一天的工作量约为1 GB,而对于另一个数据库,它的工作量约为每天的十分之一。我不希望这个比率增加。读取性能的优先级要低得多,目前可以接受。 在日志中,我有此消息: LOG: checkpoints are occurring too frequently (15 seconds apart) HINT: Consider increasing the configuration parameter "checkpoint_segments". 此值当前设置为16,这是由提供的pgtune。 我应该考虑哪些设置来提高写入性能?我希望保持尽可能的安全。考虑到传入的数据量,我可以接受一次失败就丢失一些最近的数据,只要其中的大部分数据是完整的即可。 编辑:我现在正在使用PostgreSQL 9.0,但是我计划升级到9.1。我不会发布硬件细节,因为尽管我承认它们的重要性,但最终我将需要在硬件非常多样化的多台机器上进行此优化。如果硬件对于答案是必不可少的,请给我基本信息,这样我就可以将答案应用于具有不同硬件配置的机器。

10
在数据库中标记列的有效方法是什么?
我曾经这样在数据库中标记列: user_id user_name user_password_hash 为了避免在连接两个表时发生冲突,但是后来我学到了更多关于如何别名表的知识,于是我停止这样做。 在数据库中标记列的有效方法是什么?为什么?

2
使用大IN优化Postgres查询
该查询获取您关注的人创建的帖子列表。您可以追踪的人数不受限制,但是大多数人追踪的人数<1000。 使用这种查询方式,明显的优化将是缓存"Post"id,但是不幸的是我现在没有时间。 EXPLAIN ANALYZE SELECT "Post"."id", "Post"."actionId", "Post"."commentCount", ... FROM "Posts" AS "Post" INNER JOIN "Users" AS "user" ON "Post"."userId" = "user"."id" LEFT OUTER JOIN "ActivityLogs" AS "activityLog" ON "Post"."activityLogId" = "activityLog"."id" LEFT OUTER JOIN "WeightLogs" AS "weightLog" ON "Post"."weightLogId" = "weightLog"."id" LEFT OUTER JOIN "Workouts" AS "workout" ON "Post"."workoutId" …


4
您如何测试数据库中的竞争条件?
我尝试编写数据库代码以确保它不受争用条件的影响,以确保锁定了正确的行或表。但是我经常想知道:我的代码正确吗?是否可以强迫任何现有的竞赛条件表现出来?我想确保,如果它们确实发生在生产环境中,我的应用程序将做正确的事情。 我通常确切地知道哪个并发查询可能会导致问题,但是我不知道如何强制它们并发运行以查看是否发生了正确的行为(例如,我使用了正确的锁类型),正确的错误是抛出等 注意:我使用PostgreSQL和Perl,因此,如果不能一概而论,就应该重新标记它。 更新:如果解决方案是程序化的,我希望使用它。这样,我可以编写自动化测试以确保没有回归。

4
如何将数据库从SQL Server 2012移动到SQL Server 2005
如果我需要将数据库从SQL Server 2012(32位)移至SQL Server 2005(64位),该怎么办? 我知道我不能: 在SQL Server 2005上还原数据库的备份 分离并附着 我知道我可以: 使用导入数据向导,我在一个数据库上进行了尝试,但是它只能移动数据,即使那样也很麻烦,因为我需要做很多工作来创建临时表来维护标识列,重新创建所有FK,索引等。 有没有更简单的选择?


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.