数据库管理员

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

2
MySQL中的ORDER BY FIELD()如何在内部工作
我了解ORDER BY子句的工作方式以及该FIELD()函数的工作方式。我想了解的是两者如何一起工作进行排序。如何检索行以及如何导出排序顺序 +----+---------+ | id | name | +----+---------+ | 1 | stan | | 2 | kyle | | 3 | kenny | | 4 | cartman | +----+---------+ SELECT * FROM mytable WHERE id IN (3,2,1,4) ORDER BY FIELD(id,3,2,1,4) 上面的查询将导致 +----+---------+ | id | name | +----+---------+ | …
37 mysql  order-by  fields 

7
存在(选择1…)vs存在(选择*…)一个或另一个?
每当我需要检查表中是否存在某些行时,我总是总是写如下条件: SELECT a, b, c FROM a_table WHERE EXISTS (SELECT * -- This is what I normally write FROM another_table WHERE another_table.b = a_table.b ) 其他人这样写: SELECT a, b, c FROM a_table WHERE EXISTS (SELECT 1 --- This nice '1' is what I have seen other people use FROM another_table …

2
在PostgreSQL中优化批量更新性能
在Ubuntu 12.04上使用PG 9.1。 目前,我们最多需要24小时才能在数据库上运行大量的UPDATE语句,其形式为: UPDATE table SET field1 = constant1, field2 = constant2, ... WHERE id = constid (我们只是覆盖由ID标识的对象的字段。)这些值来自外部数据源(尚未存在于表的DB中)。 该表每个都有少量索引,没有外键约束。直到结束都不会进行COMMIT。 导入pg_dump整个数据库需要2小时。这似乎是我们应该合理定位的基准。 缺少生成自定义程序以某种方式为PostgreSQL重新构造数据集以重新导入的方法,我们是否可以做些什么使批量UPDATE性能更接近于导入?(这是我们认为日志结构的合并树可以很好处理的一个区域,但是我们想知道PostgreSQL中是否可以做任何事情。) 一些想法: 删除所有非ID索引并随后进行重建? 增加checkpoint_segments,但这实际上有助于持续的长期吞吐量吗? 使用这里提到的技术?(将新数据作为表加载,然后“合并”在新数据中找不到ID的旧数据) 基本上,有很多事情可以尝试,我们不确定最有效的是什么,或者我们是否忽略了其他事情。我们将在接下来的几天中进行实验,但我们也想在这里提出问题。 我确实在表上有并发负载,但是它是只读的。

2
SQL Server不可预测的选择结果(dbms错误?)
下面是一个简单的示例,它返回的结果很奇怪,这些结果是无法预测的,我们无法在团队中进行解释。我们是在做错什么还是SQL Server错误? 经过一番调查,我们将搜索范围缩小为子查询中的union子句,该子查询从“ men”表中选择一条记录 它可以在SQL Server 2000中正常工作(返回12行),但是在2008年和2012年,它仅返回一行。 create table dual (dummy int) insert into dual values (0) create table men ( man_id int, wife_id int ) -- there are 12 men, 6 married insert into men values (1, 1) insert into men values (2, 2) insert into men values (3, …

8
SQL Server代理作业和可用性组
我正在寻找在SQL Server 2012可用性组中处理计划的SQL Server代理作业的最佳实践。也许我错过了一些东西,但是在当前状态下,我觉得SQL Server Agent并没有真正与这一出色的SQL2012功能集成在一起。 如何使计划的SQL代理作业知道节点切换?例如,我有一个在主节点上运行的作业,该作业每小时加载一次数据。现在,如果主服务器出现故障,我如何激活现在成为主服务器的辅助服务器上的作业? 如果我将作业始终安排在辅助服务器上,则它将失败,因为辅助服务器是只读的。

3
MySQL 5.1.66 SSL连接错误ERROR 2026(HY000)
更新2 使用WireShark,我发现了问题字符串(希望如此): 28 | 9.582638 | 192.168.18.128 | 192.168.18.129 | MySQL Response Error 1043 和错误是(根据docs): Error: 1043 SQLSTATE: 08S01 (ER_HANDSHAKE_ERROR) Message: Bad handshake 这是WireShark在两种情况下的屏幕截图: 从Windows 8连接(成功): 从CentOS的连接(失败): 为什么会这样? 更新 一个有趣的通知: 我已经通过使用Windows 8 (192.168.18.1)修改了Master在192.168.18.1主机上的ssluser设置,成功地与Master DB进行了连接:从REQUIRE SSL到REQUIRE X509。但是,在从属到主连接的情况下,这不适用于我们的情况。 我在CentOS-6.3中遇到了SSL复制问题。我正在使用OpenSSL创建客户端和服务器证书,并且客户端和服务器证书都由同一CA签名。 Server IP: 192.168.18.128 Slave IP: 192.168.18.129 MySQL version 5.1.66 SSL 我使用MySQL帮助页面的“设置MySQL的SSL证书和密钥”部分收到的所有证书。 服务器的my.cnf文件: [mysqld] …
37 mysql  replication  ssl 

8
将选择结果写入CSV文件
我们需要将SELECT查询结果写入一个csv文件。如何在SQL Server 2008 r2中使用T-SQL完成?我知道可以在SSIS中完成,但是由于某些原因,我们没有此选项。 我尝试在下面的文章中使用建议的proc,但是当我运行proc时,SQL抱怨无法运行在此proc中调用的sys.sp_OACreate和sys.sp_OADestroy。 您知道我们如何打开这些组件,或者知道使用T-SQL写入文件的更好方法吗? 提前致谢。

4
在实时数据库上运行pg_dump是否会产生一致的备份?
我有一个不断修改的3GB数据库,我需要在不停止服务器的情况下进行备份(Postgres 8.3)。 我的pg_dump运行5分钟。如果在此过程中修改了数据怎么办?我可以获得一致的备份吗?我不想找出灾难发生的时间。 Postgres文档http://www.postgresql.org/docs/8.3/static/app-pgdump.html对此没有任何说明。
37 postgresql 

5
没有子句的大型DELETE FROM <table>的加速方法
使用SQL Server 2005。 我正在执行巨大的DELETE FROM而没有where子句。它基本上等效于TRUNCATE TABLE语句-除了不允许使用TRUNCATE。问题是表很大-一千万行,而且要花一个多小时才能完成。有没有什么办法可以使其更快而没有: 使用截断 禁用或删除索引? t日志已经在单独的磁盘上。 任何建议欢迎!

6
可能的最小备份…使用SQL Server
每天,我们都会通过WAN运送SQL Server备份。我们需要最小化这些备份的大小,以免花费很长时间。 我们不介意我们的备份过程是否花费更长的时间。就目前而言,我们需要在WAN上移动30gig压缩备份,这需要10多个小时。 我们必须有2种选择来获得较小的每日备份。 日志传送,这意味着我们将不得不重组灾难恢复流程。 将信息剥离到db之外并在另一端重建(删除非聚集索引,将聚集索引打包为100%-在另一端重建) 两者都将涉及我们的大量工作。我们使用的是SQL Server 2008 pro,所有备份均已压缩。 是否有任何商用产品可以为我们提供与选项(2)类似的备份大小? 是否有完善的脚本可以让我们完成(2)?(处理索引视图,过滤索引,外键等)

5
如何将数据(文件)插入PostgreSQL bytea列?
这个问题与bytea v。oid v。blobs v。大物体等无关。 我有一个包含主键integer字段和bytea字段的表。我想在该bytea字段中输入数据。据推测,这可以通过一种PL/语言来完成,PL/Python将来我可能会考虑这样做。 在仍在测试和试验中,我只想使用“标准” SQL语句从文件(服务器上)插入数据。我知道,只有在服务器上具有写权限的管理员才能以我想要的方式插入数据。我现在不担心这一点,因为用户bytea目前不会插入数据。我已经搜索了各种StackExchange网站,PostgreSQL档案库和Internet,但没有找到答案。 编辑: 这从2008年的讨论意味着什么,我想做的事情是不可能的。那么如何使用bytea字段? 编辑: 这从2005年类似的问题仍然没有答案。 解决:所提供的细节在这里上的psycopg网站,我用Python编写的解决方案提供了基础。也可以使用将二进制数据插入到bytea列中PL/Python。我不知道是否可以使用“纯” SQL。


10
如何跟踪数据库依赖关系?
随着内部应用程序数年的发展,您偶尔会发现许多表,人们认为这些表不再相关并且想要删除。在SQL环境中以及可能在SSIS之类的东西中,有什么实用的方法来识别数据库依赖关系? 我曾经在一些相当残酷的地方工作过,例如: 首先删除,然后问问题(如果它试图提取不再存在的表,可能会杀死数据仓库构建) 首先删除权限,然后等待错误报告(如果故障处理不当,可能会导致静默错误) 我很欣赏SQL Server附带的工具来跟踪该实例中的依赖关系,但是如果您在不同实例上有数据库,这些工具似乎会遇到麻烦。是否有使查询依存关系更容易的选项,也许回答诸如“此列在哪里使用”之类的问题?诸如“在此存储过程中的该另一台服务器上已结束”或“此SSIS程序包中已结束”的答案?

2
PostgreSQL排除使用错误:数据类型整数没有默认的运算符类
在PostgreSQL 9.2.3中,我试图创建此简化表: CREATE TABLE test ( user_id INTEGER, startend TSTZRANGE, EXCLUDE USING gist (user_id WITH =, startend WITH &amp;&amp;) ); 但是我得到这个错误: ERROR: data type integer has no default operator class for access method "gist" HINT: You must specify an operator class for the index or define a default operator class …

6
错误代码1117列太多。表的MySQL列限制
我有一张包含1699列的表格,当我尝试插入更多列时, 错误代码:1117。列太多 在此表中,我只有1000行。对我来说,最重要的是列数。桌子上有什么限制吗?我想创建2000列。那可能吗?
37 mysql  table 

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.