数据库管理员

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


3
PostgreSQL多列唯一约束和NULL值
我有一个如下表: create table my_table ( id int8 not null, id_A int8 not null, id_B int8 not null, id_C int8 null, constraint pk_my_table primary key (id), constraint u_constrainte unique (id_A, id_B, id_C) ); 我想(id_A, id_B, id_C)在任何情况下都与众不同。因此,以下两个插入必须导致错误: INSERT INTO my_table VALUES (1, 1, 2, NULL); INSERT INTO my_table VALUES (2, 1, 2, …

3
删除mysql-bin文件安全吗?
我有MM复制在MySQL和我想挤在框中一些自由空间是删除不必要的文件,我在这些进来mysql-bin的文件里面/var/db/mysql/有数百这些文件的像mysql-bin.000123,mysql-bin.000223等我已经做检查MySQL复制show master status和show slave status他们在某些位置使用一些mysql-bin文件,但是我想所有其他bin文件都是剩余的,将不再使用。在这种情况下,删除复制当前指向的所有mysql-bin文件是否安全? 如果可以安全删除,那么在不使用这些文件时,我有什么办法可以自动删除这些文件?

15
为什么数据库管理这么难?
我认识很多数据库管理员,他们都是28-29岁。 所有的数据库管理都是这样吗?我的意思是,这是关于获得至少7-8年以上的经验吗? 还是成为数据库管理员这么难?

19
在表名中添加'tbl'前缀真的有问题吗?
我正在观看Brent Ozar的一些视频(例如,像这样的视频),他建议不要在表前添加‘tbl’或‘TBL’。 在互联网上,我发现一些博客说它没有为文档添加任何内容,而且“读取它需要更长的时间”。 问题与考虑 这真的有问题吗?因为自从我的第一份dba工作以来,我就在表的前面加上“ tbl”(高级DBA告诉我要对组织进行此操作)。 这是我需要摆脱的东西吗?我进行了一些测试,复制了一个很大的表并为其赋予了'tbl'前缀,而其他表则保留了该表,并且我没有发现任何性能问题。

5
何时在INT上使用TINYINT?
通常,我总是使用Ints。我知道,从理论上讲,这不是最佳实践,因为您应该使用可以保证存储数据的最小数据类型。 例如,最好tinyint在知道将要存储的唯一数据是1、0或null(极少有机会将其扩展到2或3)后使用。 但是,我知道这样做的唯一原因是出于存储目的-在一行中使用1个字节而不是4个字节。 除了节省硬盘驱动器上的空间之外,仅使用tinyint(或smallint什至bigint)有什么影响int?

2
如何从PostgreSQL获取当前的unix时间戳?
Unix时间戳是自1970年1月1日UTC午夜以来的秒数。 如何从PostgreSQL获取正确的Unix时间戳? 与currenttimestamp.com和timestamp.1e5b.de进行比较时,我没有从PostgreSQL获得预期的时间: 这将返回正确的时间戳: SELECT extract(epoch from now()); 虽然这不是: SELECT extract(epoch from now() at time zone 'utc'); 我住在时区UTC +02。从PostgreSQL获取当前unix时间戳的正确方法是什么? 这将返回正确的时间和时区: SELECT now(); now ------------------------------- 2011-05-18 10:34:10.820464+02 另一个比较: select now(), extract(epoch from now()), extract(epoch from now() at time zone 'utc'); now | date_part | date_part -------------------------------+------------------+------------------ 2011-05-18 10:38:16.439332+02 | 1305707896.43933 | …


5
为什么RDBM的集群不能像NoSQL那样?
Nosql DBMS的一大优点是它们可以更轻松地集群。假设使用NoSQL,您可以创建数百个便宜的计算机,这些计算机存储不同的数据并立即查询所有数据。 我的问题是,为什么关系型DBMS不能像mysql或sql server那样?是仅仅是供应商还没有找到一种技术方法来解决现有产品的问题,还是关系模型存在一些问题导致这种情况不可行?NoSQL存储和访问数据(键/值,文档等)的方式有什么好处,可以简化群集操作(如果确实如此)?

6
每组检索n行
我经常需要从结果集中的每个组中选择一些行。 例如,我可能想列出每个客户的'n'个最高或最低最近订单值。 在更复杂的情况下,每个组要列出的行数可能有所不同(由分组/父记录的属性定义)。这部分绝对是可选的/为了获得额外的荣誉,并不旨在阻止人们回答。 解决SQL Server 2005及更高版本中此类问题的主要选项是什么?每种方法的主要优点和缺点是什么? AdventureWorks示例(为清楚起见,可选) TransactionHistory对于每个以M到R(含)开头的字母的产品,从表中列出五个最近的交易日期和ID 。 再次相同,但是n每个产品都有历史记录行,其中n是DaysToManufacture产品属性的五倍。 相同,在特殊情况下,每个产品只需要一个历史记录行(单个最近的条目,由TransactionDate,打破平局)TransactionID。


3
复合索引对第一字段的查询是否也有用?
假设我有一个包含字段A和的表格B。我在A+ 上进行常规查询B,因此在上创建了一个复合索引(A,B)。A组合索引还会仅对查询进行完全优化吗? 此外,我在上创建了索引A,但Postgres仍然仅在上将复合索引用于查询A。如果前面的答案是肯定的,那么我认为这并不重要,但是如果单个A索引可用,为什么默认情况下为什么要选择复合索引呢?


6
存储过程是否可以防止SQL注入?
存储过程可以防止对PostgreSQL数据库进行SQL注入攻击吗?我进行了一些研究,发现即使仅使用存储过程,SQL Server,Oracle和MySQL也不会对SQL注入造成威胁。但是,PostgreSQL中不存在此问题。 PostgreSQL核心中的存储过程实现是否可以防止SQL注入攻击或其他?还是即使我们仅使用存储过程,PostgreSQL也容易受到SQL注入的影响吗?如果是这样,请给我看一个例子(例如书籍,网站,纸张等)。

4
测量PostgreSQL表行的大小
我有一个PostgreSQL表。select *是很慢的,select id而又好又快。我认为这可能是因为行的尺寸很大,并且运输需要一段时间,或者可能是其他一些因素。 我需要所有字段(或几乎所有字段),因此仅选择一个子集并不是快速解决方案。选择我想要的字段仍然很慢。 这是我的表架构减去名称: integer | not null default nextval('core_page_id_seq'::regclass) character varying(255) | not null character varying(64) | not null text | default '{}'::text character varying(255) | integer | not null default 0 text | default '{}'::text text | timestamp with time zone | integer | timestamp with time …

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.