数据库管理员

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

2
使用索引日期时间列的MySQL性能问题
我试图解决以下问题大约一个小时,但仍然没有解决任何问题。 好的,我有一张桌子(MyISAM): +---------+-------------+------+-----+-------------------+----------------+ | Field | Type | Null | Key | Default | Extra | +---------+-------------+------+-----+-------------------+----------------+ | id | int(11) | NO | PRI | NULL | auto_increment | | http | smallint(3) | YES | MUL | 200 | | | elapsed | float(6,3) | NO | | …

3
最有效的UUID列类型是什么
为了存储128位UUID,有多种存储选项: 字节[16]列 两个bigint / long(64位)列 CHAR(36)列-32个十六进制数字+ 4个破折号。 UUID数据库特定的列(如果数据库支持) 从索引的角度来看,哪些是最有效的?如果数据库不支持专用的uuid类型,则1,2,3中的哪一个是最佳候选者?

1
角色db_owner允许什么
我一直在尝试解决无法查看SQL Server 2012数据库中某些表的登录名。这样做时,我发现我不太了解db_owner角色允许的成员身份。我可以理解其他角色,例如,db_datareader and db_datawriter但是我对db_owner允许的角色仍然感到困惑。

1
修复表结构以避免出现“错误:重复的键值违反唯一约束”
我有这样创建的表: -- -- Table: #__content -- CREATE TABLE "jos_content" ( "id" serial NOT NULL, "asset_id" bigint DEFAULT 0 NOT NULL, ... "xreference" varchar(50) DEFAULT '' NOT NULL, PRIMARY KEY ("id") ); 稍后,插入一些指定ID的行: INSERT INTO "jos_content" VALUES (1,36,'About',...) 稍后,将插入一些没有id的记录,它们将失败并显示错误: Error: duplicate key value violates unique constraint。 显然,id被定义为一个序列: 每个失败的插入都会增加序列中的指针,直到它递增到不再存在的值并且查询成功为止。 SELECT nextval('jos_content_id_seq'::regclass) 表定义有什么问题?解决此问题的明智方法是什么?

2
如何每天确定MySQL查询?
我正在研究从MySQL到NoSQL DBaaS的重大转变,但是在尝试预测费用时遇到了一个问题。本质上,我无法弄清楚我当前的MySQL服务器每天要处理多少个查询,以尝试估计Cloudant使用的请求数,每100个PUT,POST和DELETE收取$ 0.015的费用,每500 GET收取$ 0.015的费用和头。 我已经找到了许多有关使用SHOW STATUS和SHOW GLOBAL STATUS来获取MySQL自身收集的统计信息,但是没有时间表。 例如,SHOW GLOBAL STATUS返回以下内容: Queries | 13576675 很好,除了我不知道包裹那个数字的时间表。1300万次查询何时?每月?年?从时间开始? MySQL文档并没有详细说明: 查询 服务器执行的语句数。与Questions变量不同,此变量包括在存储的程序中执行的语句。它不计算COM_PING或COM_STATISTICS命令。这个变量是在MySQL 5.0.76中添加的。 在此先感谢您的帮助。
15 mysql 

1
从ibd文件中没有ibdata1的数据文件夹中恢复MySQL数据库
我的WAMP目录意外地被另一个用户删除。MySQL中仅数据文件夹可用。并且,因为只有数据库文件夹(带有数据库名称的“ \ bin \ mysql \ mysql5.6.12 \ data \”中的文件夹)可用。“ \ bin \ mysql \ mysql5.6.12 \ data \”的根目录中包括“ ibdata1 ”的所有文件也将被删除。 数据库文件夹仅包含具有以下扩展名的文件。 * .frm,*。ibd 和“ db.opt”文件。 如何恢复数据库? 我已经尝试恢复bdata1。但是,无法取回它。并且,某些数据库也包含MYISAM。

3
在SQL Server中安全地生成UNIQUEIDENTIFIER
我打算将a UNIQUEIDENTIFIER作为访问密钥,用户可以用来访问某些数据。在这种意义上,密钥将充当密码。 我需要在INSERT...SELECT语句中生成多个这样的标识符。出于架构原因,在这种情况下,我想在服务器端生成标识符。 如何生成安全随机的UNIQUEIDENTIFIER?注意,这NEWID不会足够随机,因为它根本不保证任何安全属性。我正在寻找与System.Security.Cryptography.RandomNumberGenerator等效的SQL Server,因为我需要不可猜测的ID。基于的任何内容CHECKSUM,RAND或GETUTCDATE也不符合条件的内容。

2
为什么截断DDL?
我有一个面试问题,在面试过程中被问到。我回答了这个问题,但是面试官对我的回答并不那么确信。那么,有人请以我的理解纠正我吗? 问:为什么截断是DDL,而删除是DML?两者都做几乎相同的工作(删除行) Ans。当我们使用Truncate时,我们将取消分配数据分配的整个空间,而不保存到undo-table-space中。但是,在Delete的情况下,我们将所有数据放入undo表空间,然后删除所有数据。 请,如果有人知道上述最佳答案,请解释。
15 oracle  delete  ddl  truncate 


1
在单个数据库上批量插入权限
我在一家拥有直接IT安全方式的公司工作。为了优化我们团队中的某些流程,我被聘为数据库分析师。问题是我只具有读写权限,并且正在尝试获取数据库的高级权限。当前,我们在单个服务器上有很多数据库,并且只能在单个数据库上工作,我想知道是否BULK INSERT可以将权限授予单个数据库,还是对整个服务器授予权限? 我已经在网上搜索了一下,但是有些困惑。这是我发现的。为了使用BULK INSERT,我应该INSERT对所需的表或数据库具有权限,而ADMINISTER BULK OPERATIONS这是服务器范围的权限。如果我获得了ADMINISTER BULK OPERATIONS对整个数据库的INSERT许可权,并且获得了对单个数据库的许可权,那么BULK INSERT由于我没有INSERT对其他数据库的许可权,我是否只能在该单个数据库中? 是否可以将它限制为BULK INSERT在具有多个数据库的服务器上的单个数据库使用? 抱歉,文字墙,谢谢!

1
如何在PostgreSQL中使用AES加密?
我通过使用以下语句尝试了aes-encryption: SELECT encrypt('test', 'key', 'aes'); 哪个有效,但我无法解密该值。我将它插入了一个数据类型bytea的字段中,但是我不确定这是否正确。 SELECT decrypt(pw, 'key', 'aes') FROM table WHERE ID = 1; 给我错误 错误:函数delete(bytea,未知,未知)不存在第 1行:从Tabelle WHERE ID = 7;中选择解密(pw,'key','aes');^ 提示:没有函数与给定的名称和参数类型匹配。您可能需要添加显式类型转换。 这是否真的意味着crypto()是现有函数,而不是crypto()?我还能如何检索aes加密的值?

2
SQL Server十进制(9,0)与INT
我们的一位客户使用DECIMAL(18,0)他的SQL Server 2008R2数据库中的数据类型作为某些列。由于列的增长非常缓慢,因此他最近提议更改数据类型DECIMAL(5,0)以重新获得一些存储空间。 根据MSDN库,与DECIMAL(5,0)数据类型一样,DECIMAL(9,0)数据类型的存储空间为5个字节。INT是小1个字节,但可以存储-2 ^ 31到2 ^ 31范围内的所有内容,而不是DECIMAL(5,0)可以存储的-99,999到99,999 。即使是最大的DECIMAL5个字节(DECIMAL(9,0)),也只能存储-999,999,999到999,999,999(小于范围的一半)范围内的整数INT 4字节)。 我可以想到使用DECIMALover 的两个“好处” INT: 之后可以增加规模,而无需使用更多的存储空间 可以将精度扩展到38位,而无需更改数据类型 但是我认为这些并不是真正的好处: 将比例添加到整数仅在极少数情况下才有意义(在大多数情况下比例确实有所不同,也可以预先添加) SQL Server将每个精度/小数位组合视为不同的数据类型,因此在提高精度或小数位时,不会单独保留数据类型。 这让我想知道:DECIMAL(5,0)整数数据类型的附加好处是什么?


1
解释SQL Server的Showplan XML
我刚刚在网站http://sqlfiddle.com上推出了一项功能,该功能使用户可以查看其查询的原始执行计划。对于PostgreSQL,MySQL和(在某种程度上)Oracle,可以理解原始执行计划的输出。但是,如果您查看SQL Server的执行计划输出(使用生成的SET SHOWPLAN_XML ON),那么即使对于相对简单的查询,也要经过大量的XML。这是一个示例(摘自该“小提琴”的上一个查询的执行计划:http : //sqlfiddle.com/#!3/ 1fa93/1): <ShowPlanXML xmlns="http://schemas.microsoft.com/sqlserver/2004/07/showplan" Version="1.1" Build="10.50.2500.0"> <BatchSequence> <Batch> <Statements> <StmtSimple StatementText="
select * from supportContacts" StatementId="1" StatementCompId="1" StatementType="SELECT" StatementSubTreeCost="0.0032853" StatementEstRows="3" StatementOptmLevel="TRIVIAL" QueryHash="0x498D13A3874D9B6E" QueryPlanHash="0xD5DDBD3C2D195E96"> <StatementSetOptions QUOTED_IDENTIFIER="true" ARITHABORT="false" CONCAT_NULL_YIELDS_NULL="true" ANSI_NULLS="true" ANSI_PADDING="true" ANSI_WARNINGS="true" NUMERIC_ROUNDABORT="false"/> <QueryPlan CachedPlanSize="16" CompileTime="0" CompileCPU="0" CompileMemory="72"> <RelOp NodeId="0" PhysicalOp="Clustered Index Scan" LogicalOp="Clustered Index Scan" EstimateRows="3" EstimateIO="0.003125" …


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.