数据库管理员

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

6
用于数据库的SSD与HDD
我正在尝试购买新的服务器以在其上运行MySQL Server。这个新服务器将成为我主机的从属服务器。但是,此服务器将专用于仅报告“大量读取和复杂查询”。 现在,我正在考虑投资固态硬盘,但想知道这是否真的值得。SSD和SATA 7200硬盘之间的差价约为1500美元,并且SSD的磁盘空间较小。如果我确实投资SSD,那么速度会明显吗? 我可以以比购买2(500GB SSD)少$ 1500的价格购买4(500GB SATA 7200) 您能否帮助我做出决定,看看是否值得升级? 我想再次提一提的是,我没有使用query_cache磁盘,因此会有大量磁盘读取。 该服务器将具有32GB的RAM,并将运行Ubuntu 12.04
42 mysql  ssd 

1
是否有GETDATE()的类似物返回DATETIME2
根据MSDN,Getdate(),GetUtcDate()和CURRENT_TIMESTAMP都返回DATETIME。我进行了简短测试,确认了: CREATE TABLE #t(T DATETIME2(7)); GO DECLARE @i INT ; SET @i=1; WHILE @i<10000 BEGIN ; INSERT #t VALUES(CURRENT_TIMESTAMP) ; SET @i=@i+1; END ; SELECT DISTINCT t FROM #t ORDER BY t ; --- 2013-01-28 13:23:19.4930000 2013-01-28 13:23:19.4970000 2013-01-28 13:23:19.5000000 2013-01-28 13:23:19.5030000 2013-01-28 13:23:19.5070000 2013-01-28 13:23:19.5100000 2013-01-28 13:23:19.5130000 (剪断) 是否有返回DATETIME2(7)的类似函数?

2
如何在pgAdmin III中查看数据
我简直不敢相信他们会这么难。我不知道如何查看数据库中的数据。 有没有一种简单的方法可以使用pgAdmin III查看表中的数据?另外,是否有我可以使用的不烂的程序?

5
PostgreSQL上的Aggressive Autovacuum
我试图让PostgreSQL主动自动清理数据库。我目前已将自动吸尘配置如下: autovacuum_vacuum_cost_delay = 0#关闭基于成本的真空 autovacuum_vacuum_cost_limit = 10000#最大值 autovacuum_vacuum_threshold = 50#默认值 autovacuum_vacuum_scale_factor = 0.2#默认值 我注意到只有在数据库未处于负载状态时才会启动自动清理功能,因此我遇到了这样的情况:死元组比活动元组多得多。有关示例,请参见随附的屏幕截图。其中一张桌子有23个活动元组,但有16845个死元组正在等待真空。太疯狂了! 当测试运行完成并且数据库服务器处于空闲状态时,自动吸尘器将启动,这不是我想要的,因为当失效的元组的数量超过20%的活动元组+ 50时,我希望自动吸尘器启动,因为数据库已经配置。服务器空闲时自动清理对我来说毫无用处,因为生产服务器在持续的时间内有望达到每秒数千次的更新,这就是即使服务器负载时我也需要运行自动清理的原因。 有什么我想念的吗?在服务器负载较重时,如何强制自动吸尘器运行? 更新资料 难道这是一个锁定问题?有问题的表是汇总表,这些表是通过插入后触发器填充的。这些表被锁定为SHARE ROW EXCLUSIVE模式,以防止并发写入同一行。

8
在SQL Server 2012上,select *是否仍然是一大禁忌?
在过去的日子里,它被认为是一个很大的禁忌,select * from table或者select count(*) from table因为性能受到影响。 在更高版本的SQL Server中是否仍然如此(我使用的是2012,但我想这个问题将适用于2008-2014)? 编辑:由于人们似乎在这里对我有些偏颇,所以我正在从基准/流行病的角度看待这个问题,而不是是否要做“正确”的事情(当然不是)

2
InnoDB:错误:升级到mysql 5.6后找不到表“ mysql”。“ innodb_table_stats”
我从5.5升级到mysql 5.6,现在我的日志在启动时满是此类消息 我在这里找到了可能的解决方案,但它似乎并不正式。 http://forums.mysql.com/read.php?22,578559,579891#msg-579891 2013-12-06 21:08:00 7f87b1d26700 InnoDB: Error: Table "mysql"."innodb_table_stats" not found. 2013-12-06 21:08:00 7f87b1d26700 InnoDB: Recalculation of persistent statistics requested for table "drupal"."sessions" but the required persistent statistics storage is not present or is corrupted. Using transient stats instead. 2013-12-06 21:08:07 7f903c09c700 InnoDB: Error: Table "mysql"."innodb_table_stats" not found. …

3
如何在没有外部Cron类工具的情况下在Postgresql上运行重复任务?
我想定期调用存储过程。在Oracle上,我将为此创建工作。我发现Postgresql可以通过使用外部工具(cron等)和PgAgent很好地模仿这一点。 您是否知道不涉及外部工具的“内部”替代方案? 我想避免与pgAgent命令行上存储的密码有关的安全问题。 我想避免隐藏密码(~/.pgpass)的任何其他系统配置。 PostgreSQL 8.3 Linux RedHat 64位

5
我可以启动存储过程并立即返回而无需等待它完成吗?
我们有一个存储过程,用户可以手动运行该存储过程以获取全天不断使用的报告的一些更新编号。 我有第二个存储过程,应该在第一个存储过程运行之后运行,因为它基于从该第一个存储过程获得的数字,但是它需要更长的时间运行并且用于单独的过程,所以我不想让用户等待第二个存储过程运行。 有没有一种方法可以让一个存储过程启动另一个存储过程,然后立即返回而无需等待结果? 我正在使用SQL Server 2005。


2
默认为NULL还是NOT NULL?
在MySQL中,除非您知道必须填写字段,否则始终允许使用null还是在Not Null您知道字段将包含null的情况下始终使用更好?还是没关系? 我知道在某些DBMS中,他们说要Not Null尽可能多地使用,因为允许空值需要每条记录额外的位(或字节?)来存储Null状态。
41 mysql  null 

3
Transact-SQL查询中字符串前的N前缀
请问我什么时候应该在Transact-SQL查询中的字符串前使用N前缀?我开始使用这样的查询无法获得任何结果的数据库 SELECT * FROM a_table WHERE a_field LIKE '%а_pattern%' 直到我将模式更改为N'%а_pattern%'。我从不需要在以前添加此前缀,所以我很好奇。a_field被定义为nvarchar(255),但我认为原因是其他原因。


3
为什么允许新用户创建表?
我想知道为什么允许新创建的用户连接到数据库后创建表。我有一个数据库,project2_core: postgres=# \l List of databases Name | Owner | Encoding | Collate | Ctype | Access privileges ---------------+--------------+-----------+-------------+-------------+------------------------------- postgres | postgres | SQL_ASCII | C | C | project2_core | atm_project2 | UTF8 | de_DE.UTF-8 | de_DE.UTF-8 | project2=CTc/project2 template0 | postgres | SQL_ASCII | C | C | …


14
尝试将MySQL Workbench与基于SSH的TCP / IP一起使用-连接失败
我无法从PC在MySQL Workbench中使用SSH连接使用TCP / IP进行连接。这是怎么回事? 我在Ubuntu服务器mysql.myhost.com上创建了MySQL 5.1数据库。我可以在本地访问它。MySQL Workbench(PC)提供通过ssh通过TCP进行连接。它运行在远程服务器的端口3306上,命令行mysql可以正常工作。 我使用了以下会话详细信息: 连接方法:SSH上的TCP / IP。 SSH主机名:mysql.myhost.com:3306 SSH用户名:我的Linux登录名 SSH公用密钥文件:我的本地公用密钥文件 MySQL主机名称:127.0.0.1 MySQL 服务器端口:3306 用户名:root 尝试连接时收到错误消息:“使用用户root通过mysql.myhost.com上的SSH隧道无法通过127.0.0.1:3306连接到MySQL” “无法连接到'127.0.0.1'(10061)上的MySQL服务器” 作为另一项测试-我使用Putty使用端口3306设置了SSH隧道,并且可以使用MySQL Workbench通过该隧道连接OK,如上所述,该隧道将到本地3306的连接转发到远程服务器。但是我无法在Workbench中使用“基于SSH的TCP / IP”。 第二个问题:当Workbench询问“ SSH公用密钥文件的路径”时,它真的不需要我的专用密钥文件吗?

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.