数据库管理员

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

6
在表中任意排序记录
使用数据库时,通常需要按顺序访问记录。例如,如果我有一个博客,我希望能够以任意顺序重新排列我的博客文章。这些条目通常具有很多关系,因此关系数据库似乎很有意义。 我见过的常见解决方案是添加一个整数列order: CREATE TABLE AS your_table (id, title, sort_order) AS VALUES (0, 'Lorem ipsum', 3), (1, 'Dolor sit', 2), (2, 'Amet, consect', 0), (3, 'Elit fusce', 1); 然后,我们可以对行进行排序,order以使其按正确的顺序排列。 但是,这似乎很笨拙: 如果我想将记录0移到开头,则必须对每个记录重新排序 如果我想在中间插入新记录,则必须对每个记录重新排序 如果要删除记录,则必须对它之后的每个记录重新排序 很容易想到这样的情况: 两个记录具有相同的 order order记录之间存在差距 这些可能很容易发生,原因有很多。 这是Joomla之类的应用程序采用的方法: 您可能会争辩说这里的界面很糟糕,他们应该使用箭头或拖放操作来代替人类直接编辑数字,而您可能是正确的。但是在幕后,发生了同样的事情。 有人建议使用小数来存储顺序,以便您可以使用“ 2.5”将记录插入顺序为2和3的记录之间。虽然这样做有所帮助,但可以说它甚至更麻烦,因为您最终会得到奇怪的小数点(您在哪里停止?2.75?2.875?2.8125?) 有没有更好的方法将订单存储在表中?

2
oracle-列出有权访问某些表的用户
我敢肯定这已经被问过了,但是我似乎找不到下面的相关细节。 是否有某种可以完成以下操作的预建表(我使用过dba_tab_privs,但是它是有限的,不能满足我的所有需求),如果没有人有一些查询来回答以下问题? 列出所有被分配了特定角色的用户? 列出授予用户的所有角色? 列出授予用户的所有特权? 列出某个角色赋予SELECT访问权限的表? 列出用户可以从中选择的所有表? 列出所有可以在特定表上进行SELECT的用户(通过授予相关角色或通过直接授予(即,可以在joe上进行授予选择))?该查询的结果还应显示用户通过哪个角色拥有此访问权限,或者它是否是直接授予权限。

4
MySQL InnoDB崩溃验尸
MySQL今天早上对我崩溃了。 除了标准的MySQL随附数据库外,我使用的都是InnoDB。 我尝试重新启动MySQL守护程序,但失败两次。 然后,我重新启动了整个服务器,MySQL正确启动,并且自此以来一直运行良好。 初始崩溃的mysqld日志文件包含以下内容: 120927 10:21:05 mysqld_safe Number of processes running now: 0 120927 10:21:06 mysqld_safe mysqld restarted 120927 10:21:12 [Note] Plugin 'FEDERATED' is disabled. 120927 10:21:12 InnoDB: The InnoDB memory heap is disabled 120927 10:21:12 InnoDB: Mutexes and rw_locks use GCC atomic builtins 120927 10:21:12 InnoDB: Compressed tables …

4
如何从另一个表更新一个表
我有一个表A有列(id,field_1,field_2),另一个表B有列(id,field_2) 现在我想将表B合并到A,这意味着我想将表A中的field_2更新为表B的值。那么如何实现呢?顺便说一句我正在使用甲骨文 谢谢
28 oracle 

5
如何正确杀死MySQL?
我安装了带有CPanel的CentOS 64位,并且使用: service mysql stop 它只是保持滴答作响,似乎从未停止过。在日志中,它仅发布了许多内容: 130303 17:42:38 [Warning] /usr/sbin/mysqld: Forcing close of thread 在err.log文件中,我看到了很多这些: [Warning] /usr/sbin/mysqld: Forcing close of thread 它曾经是即时的。任何想法为什么这样做以及如何解决? 现在我必须做,killall -9 mysql但是有更好的方法吗? 服务器也非常活跃。 这是配置问题吗?记忆设置是否太高? [mysqld] default-storage-engine=MyISAM local-infile=0 symbolic-links=0 skip-networking max_connections = 500 max_user_connections = 20 key_buffer = 512M myisam_sort_buffer_size = 64M join_buffer_size = 64M read_buffer_size = 12M …

3
将列添加到生产表
在SQL Server 2008 R2上的大型生产表中添加列的最佳方法是什么?根据微软在线书籍: ALTER TABLE中指定的更改将立即实施。如果更改需要修改表中的行,则ALTER TABLE将更新行。ALTER TABLE在表上获取一个模式修改锁,以确保在更改期间没有其他连接甚至引用该表的元数据,除非联机索引操作最后需要非常短的SCH-M锁。 (http://msdn.microsoft.com/zh-cn/library/ms190273.aspx) 在具有数百万行的大型表上,这可能需要一段时间。停电是唯一的选择吗?处理这种情况的最佳方法是什么?

3
表分区有何帮助?
我很难掌握表分区的优缺点。我即将开始一个有8个表的项目,其中一个将是主要数据表,其中将包含180-2.6亿条记录。由于将对表进行正确的索引,因此我正在考虑将表记录限制为2000万,这样我就必须创建9-13个表。 但是我不确定如何提高性能,因为它们将位于同一台计算机(32GB RAM)上? 我正在使用MySQL,表将是MyISAM,大表将在id字段上具有索引,并且没有进一步的复杂性,例如全文搜索等。 还请阐明表分区与数据库分区。

3
当我向其中添加WHERE子句时,是否优化了视图?
如果在视图内部或外部过滤视图,这会有所不同吗? 例如,这两个查询之间有什么区别吗? SELECT Id FROM MyTable WHERE SomeColumn = 1 要么 SELECT Id FROM MyView WHERE SomeColumn = 1 并且MyView定义为 SELECT Id, SomeColumn FROM MyTable 如果源表位于链接服务器上,答案是否有所不同? 我之所以问是因为我必须从链接的服务器查询一个大表(4400万行)两次,并获得结果的汇总。我想知道是否应该创建两个视图来访问数据,每个查询一个视图,还是我可以放弃一个视图和一个WHERE子句。

5
如何运行带有许多插入的大型脚本而又不会耗尽内存?
题: 我有一个从select语句中插入约4.5万个脚本的脚本。当我尝试运行它时,收到一条错误消息,指出我的内存不足。如何使该脚本运行? 内容: 添加了一些新的数据字段,以使一个应用程序可以与客户端使用的另一个应用程序完美兼容。 从客户端获取了一个包含所有数据的电子表格,这些数据将当前数据项映射到这些新字段的值。 将电子表格转换为插入语句。 如果我仅运行某些语句,则它可以工作,但整个脚本却不能。 不,没有错别字。 如果有其他方法,我应该加载此数据,请随时批评我并告知我。

3
高效插入具有聚簇索引的表
我有一条SQL语句,将行插入到表中,该表在TRACKING_NUMBER列上具有聚簇索引。 例如: INSERT INTO TABL_NAME (TRACKING_NUMBER, COLB, COLC) SELECT TRACKING_NUMBER, COL_B, COL_C FROM STAGING_TABLE 我的问题是-在SELECT语句中为聚集索引列使用ORDER BY子句是否有帮助,或者ORDER BY子句所需的额外排序会否抵消获得的任何收益?

4
在生产中的数据库上使用SQL Profiler
作为开发人员,我经常使用SQL Profiler。这是一个很好的调试工具,既可以跟踪我的代码在做什么,也可以分析性能问题。 但是我一直在我的开发环境中使用它,并且使用的方式非常受控。 启动我的应用程序,并使其进入特定状态 在探查器上开始跟踪 对我的应用程序执行特定的操作序列 停止跟踪并检查结果。 SQL Profiler可以在生产环境中实际使用吗? 我首先关心的是它将降低性能。 我的第二个担心是,因为它正在生产中,所以您不会触发有趣的动作本身。您将不得不长时间运行分析器,然后分析结果。结果集会变得太笨拙吗?(占用太多的磁盘空间,很难查询)。 有人在生产中使用SQL事件探查器吗?

2
选择SQL文本列时如何换行?
我从带有长文本列的表中选择。我想将长行换成最大行长。 从: SELECT * FROM test; test_id | text --------+----------------------------------------------------------------------- 1 | Lorem ipsum dolor sit amet, consectetur adipiscing elit. Mauris lorem 至: test_id | text --------+----------------------------- 1 | Lorem ipsum dolor sit amet,+ | consectetur adipiscing elit+ | . Mauris lorem
28 postgresql 




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.