数据库管理员

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

1
如何将大型MySQL数据库迁移到RDS?
我已经研究了一下。我意识到在Stack Overflow上也有类似的问题,Amazon本身也提供了一个有用的文档,在此提供了建议: http://aws.amazon.com/articles/2933 我的担忧如下: 亚马逊建议mysqldump仅用于“少量数据”,它们定义为小于1GB。我打算迁移的数据库超过20GB。 mysqldump但是,有一件很有趣的事,就是它具有--single-transaction标志,这使我可以确保数据库状态与单个时间点一致。 对于大量数据,Amazon的建议是将数据库导出到平面(例如CSV)文件中,然后用于mysqlimport将其导入RDS。但是,我知道如何执行此操作的最好方法是通过SELECT ... INTO OUTFILE命令,该命令一次只操作一个表。当然,这样做的缺点是它不提供的一致性保证--single-transaction。 我想我可以通过暂时关闭整个数据库来确保一致性。但我想尽可能避免这种情况。 将大型(> 20GB)大数据库转换为平面文件以便可以使用的最佳方法是什么mysqlimport? 如果确实是SELECT ... INTO OUTFILE命令,那么如何导出数据库中的所有表(最好不必一次执行一个表)? 有什么好的方法可以确保所有这些方面的一致性?

3
我可以在执行计划窗格中让SSMS向我显示实际查询费用吗?
我正在解决SQL Server中多语句存储过程的性能问题。我想知道应该在哪一部分上花费时间。 我从如何阅读查询费用中了解到,它始终是百分比吗?即使SSMS被告知包括实际执行计划,“查询成本(相对于批次)”数字仍基于成本估算,这可能与实际情况相去甚远 从测量查询性能中可以了解到:“执行计划查询成本” vs“花费时间”,我可以用SET STATISTICS TIME语句围绕存储过程的调用,然后在Messages窗格中获得如下列表: SQL Server parse and compile time: CPU time = 0 ms, elapsed time = 1 ms. SQL Server Execution Times: CPU time = 0 ms, elapsed time = 0 ms. [etc] SQL Server Execution Times: CPU time = 187 ms, elapsed time = …

3
where子句中的列顺序应该与索引顺序相同吗?
我正在阅读use-the-index-luke.com,其中详细说明了索引的工作方式。该人员再次重申的一件事是,索引的顺序非常重要,为了使查询快速,where子句列应与索引中的列相同。今天,我只是证实了这一理论,并在SQL Server 2008上创建了一个表(id int,名称nvarchar(100))。我在其中插入了约5000行并创建了一个索引 create index abc on test (name, id ) 并触发了查询 select ID, name from test where ID = 10 and name = '10' 我原本希望在查询计划中进行全表扫描,然后再进行选择,但令我惊讶的是,计划的输出是选择所跟随的索引扫描。 因此,我的问题是Where子句中的列顺序很重要还是SQL Server根据索引定义重新排列了它们? 谢谢 !!


2
如何强制Windows在PostgreSQL中支持不支持的LC_COLLATE和LC_TYPE?
我已经重新安装了PostgreSQL9.1.x。不幸的是,我发现OS不支持LC_COLLATE = 'pl_PL.utf8'和LC_CTYPE = 'pl_PL.utf8'。我在PostgreSQL文档中读到: 在所有平台上,都可以使用名为default,C和POSIX的排序规则。根据操作系统支持,可能会提供其他归类。 但是,是否可以强迫Windows支持该语言环境呢?我的意思是补丁,插件之类的东西。

2
dm_exec_query_stats中的什么单位是“读”和“写”
MSDN将dm_exec_query_stats中的各种逻辑/物理读和写列描述为: 上一次执行计划时执行的物理读取数。 这些列都是64位整数(bigint),因此,显然更大的数字表示更多的读取/写入。 但是此列的单位是什么?数据库页面?千字节?只是一个任意数字? 示例:在我的数据库中进行相当昂贵的查询dm_exec_query_stats.total_logical_reads = 40412。 40412是什么?
8 sql-server  dmv 


5
PostgreSQL导入CSV文件导致语法错误
我正在尝试通过“ COPY”命令将CSV文件导入数据库;但是,出现了(看起来很常见)错误,我需要成为超级用户,而应该使用“ \ copy”。但是,当使用\ copy时,出现语法错误: ERROR: syntax error at or near "\" LINE 1: \copy 插入符号指向“ \”。这是我的查询: \copy tablename(column2, column3, column4, column5) from '/home/uploads/data.csv' WITH DELIMITER ',' CSV HEADER' 我尝试了“复制”和“ \复制”。第一个给我一个超级用户错误,第二个给了我语法错误。关于如何解决它的任何想法?让它起作用? 我正在通过myPgAdmin的sql输入字段执行命令。 我唯一的其他问题是关于通过tablename(column2,column3等等)导入列。那是正确的语法吗?

1
MySQL中的朋友关系
我正在MySQL中建立一种友谊关系,其中的朋友关系是相互的。如果A是B的朋友,则B是A的朋友。如果用户之一结束友谊,则关系下降。我想学习哪种方法更好。 我有一个正在运行的系统; user ----------- userid p.k name friends ------- userid friendid primary key (`userid`,`friendid`), key `friendid` (`friendid`) 1 2 2 5 1 3 To get all of my friends; SELECT u.name, f.friendid , IF(f.userid = $userid, f.friendid, f.userid) friendid FROM friends f inner join user u ON ( u.userid = …

2
SQL Server:事务复制计算列
我是事务复制订阅的订阅者。我无法控制发布者。 我已阅读以下有关对发布数据库进行架构更改的文章: 在发布数据库上进行架构更改 但是,我正在尝试更改订阅端的架构(如果可能)。我想知道事务复制是否支持将持久性计算列添加到订户表。 与为需要计算值的每个表添加新视图相比,我更喜欢此解决方案。

2
SQL Server 2008:登录名来自不受信任的域,不能与Windows身份验证一起使用
这里的问题不同于1和2 当尝试连接到网络中另一个系统上的SQL Server数据库时,两者都在工作组中,当尝试使用带有Windows身份验证的SQL Server Management Studio连接到SQL Server 2008实例时,我就连接了。 但是当尝试从我的应用程序连接时,出现以下错误 (登录失败。登录名来自不受信任的域,不能与Windows身份验证一起使用。)Native = 18452)。 如果SQL Server Management Studio可以连接,我的应用程序要连接需要什么?

2
重建索引的功能是什么?
我在IT世界中还很年轻,并且每天都在学习。我刚开始使用SQL数据库,但有很多基本问题。 特别是其中之一,重建索引的功能是什么?我尚未通过Google找到一个好的答案。 任何反馈表示赞赏。

1
空间索引可以成为多列索引的一部分吗?
这里的手册非常不清楚,甚至没有提供一些示例SQL语句:http : //dev.mysql.com/doc/refman/5.6/en/column-indexes.html 重述该问题的另一种方法是: 我们知道我们可以有一个包含多列的索引。如果这些列的索引属于不同类型怎么办?说第一列是空间,另一列是fulltextsearch,等等。我们可以在mysql中这样做吗?(奖金:如果您碰巧知道,我们可以在mongodb中这样做) 假设您有一张myisam桌子 它具有包含点的LATLONG列 它具有FULLTEXT列,其中包含“业务”中的单词 您要先按LATLONG查询,然后在匹配的LATLONG中要基于FULLTEXT列进行过滤。 我想您将需要多列索引。 但是,SQL命令是什么? 众所周知,如果可能的话,mysql将始终首先使用fulltextsearch索引。 该查询: SELECT BusinessID as ID , 111151.29341326*SQRT(pow(-6.186751-X(LatLong),2)+pow(106.772835-Y(LatLong),2)*0.98838574205337) AS Distance from tableauxiliary use index (LatLong_2) WHERE MBRContains( GeomFromText ( 'MULTIPOINT(-6.1934985598076 106.76604791159,-6.1800034401924 106.77962208841)' ), Latlong)=1 AND Prominent >15 AND MATCH FullTextSearch AGAINST ('sea*' IN BOOLEAN MODE) ORDER BY Distance LIMIT …
8 mysql  index 



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.