假设您有以下表格和数据:
create table t (
k int,
v int,
index k(k)
) engine=memory;
insert into t (k, v)
values (10, 1),
(10, 2),
(10, 3);
Run Code Online (Sandbox Code Playgroud)
发出select * from t where k = 10
noorder by
子句时,MySQL默认如何对记录进行排序?
我有一个数据库,它有一个350 MB 的数据文件(.mdf) 和一个4.9 GB 的日志文件(.ldf)。恢复模式设置为FULL
.
当我尝试缩小日志文件时,它并没有缩小。
我知道缩小数据库不好,也不应该这样做。但我仍然试图缩小日志文件。
当我跑
DBCC SQLPerf(logspace)
Run Code Online (Sandbox Code Playgroud)
我发现日志大小为4932 MB,使用的日志空间为98.76%!
然后我尝试了这个命令
USE <databasename>;
DBCC loginfo;
Run Code Online (Sandbox Code Playgroud)
现在几乎所有的 VLF 都是“状态 2”,这意味着都在使用中。
我尝试进行日志备份,然后缩小日志文件。收缩并没有减小尺寸。
我将恢复模型更改为SIMPLE
并再次尝试缩小,但这也无济于事。
我检查了未结交易
DBCC opentran (database);
Run Code Online (Sandbox Code Playgroud)
并发现现在没有交易打开。
是什么阻止我缩小日志文件?我该如何解决这个问题?
我读过一篇文章,提到我们可以通过使用该语句实现每秒 60,000 次插入,该LOAD DATA IN FILE
语句从 csv 文件中读取并将数据插入到数据库中。
为什么它应该与普通刀片不同?
编辑:
我通过只调用一个INSERT
语句来减少往返:
INSERT INTO tblname
VALUES (NULL,2,'some text here0'),(NULL,2,'some text here1')
,(NULL,2,'some text here2'),(NULL,2,'some text here3')
.....,(NULL,2,'some text here3000');
Run Code Online (Sandbox Code Playgroud)
那这个呢?
我想知道两件事:
每个内核是 1 个文件吗?那么四核 = 4 个 tempdb 文件,创建三个新文件?
我想将我的 PostgreSQL 从版本8.4升级到9.4。
该文件是不是很清楚,我。
我的 PostgreSQL 在CentOS 6.6服务器上运行。
当连接到我们的生产服务器(SQL Server 2008,非常强大的机器)时,这个 SELECT 语句需要2 秒,吐回所有字段(总共 4 MB 数据)。
SELECT TOP (30000) *
FROM person
WITH(NOLOCK);
Run Code Online (Sandbox Code Playgroud)
从同一网络上的任何其他框(使用 SQL 身份验证或 Windows 身份验证连接),相同的查询需要1 分 8 秒。
我正在使用这个非常简单的语句进行测试,以说明它不是索引问题或与查询相关的问题。(我们目前所有查询都存在性能问题......)
这些行成块出现,而不是一次全部出现。我立即得到我的第一行,然后等待超过 1 分钟让成批的行进来。
这是从远程框运行时查询的客户端统计信息:
Query Profile Statistics
Number of INSERT, DELETE and UPDATE statements 0
Rows affected by INSERT, DELETE, or UPDATE statements 0
Number of SELECT statements 2
Rows returned by SELECT statements 30001
Number of transactions 0
Network Statistics
Number of server roundtrips 3
TDS packets sent …
Run Code Online (Sandbox Code Playgroud) 我有一个SQL Server 2014表,如下所示:
OrderId int not null IDENTITY --this is the primary key column
OrderDate datetime2 not null
CustomerId int not null
Description nvarchar(255) null
Run Code Online (Sandbox Code Playgroud)
我团队中的一些人建议聚集索引应该在OrderId
,但我认为CustomerId
+OrderId
将是更好的选择,原因如下:
WHERE CustomerId = @param
,而不是OrderId
CustomerId
是Customer
表的外键,因此使用聚集索引CustomerId
应该会加快连接速度CustomerId
不是唯一的,但OrderId
在索引中指定额外的列将确保唯一性(我们可以UNIQUE
在这两列上创建聚集索引时使用关键字,以避免没有唯一性的开销)CustomerId
并且OrderId
永远不会改变,所以这些行在初始写入后不会移动。CustomerId
进来时,聚集索引将能够提供所有列而无需任何额外工作。是否CustomerId
和OrderId
做法的声音是最好的选择给出了上述?或者,OrderId
它本身更好,因为它是一个单独的列,它本身就保证了唯一性?
目前,该表在 上有一个聚集索引,在 上有一个OrderId
非聚集索引CustomerId
,但它没有覆盖,所以由于我们使用的是 ORM …
如何将我的TempDB 数据或日志文件从现在的任何位置移动到不同的驱动器或文件夹?