Questions tagged «performance-tuning»

改善数据库应用程序或系统的性能特征。

1
sp_cursorprepexec导致5300万次读取?
我们正在使用SQL Server 2012运行Dynamics AX 2012安装。我知道不应再使用游标,但是AX正在使用它,并且我们无法更改此行为,因此必须使用它。 今天,我遇到了一个非常糟糕的查询,读取次数超过5300万,执行时间超过20分钟。 我通过我们的监视工具SentryOne捕获了此查询。 declare @p1 int set @p1=1073773227 declare @p2 int set @p2=180158805 declare @p5 int set @p5=16 declare @p6 int set @p6=1 declare @p7 int set @p7=2 exec sp_cursorprepexec @p1 output,@p2 output,N'@P1 bigint,@P2 nvarchar(5),@P3 bigint,@P4 nvarchar(8),@P5 bigint,@P6 bigint,@P7 bigint,@P8 bigint,@P9 bigint,@P10 bigint,@P11 bigint,@P12 bigint,@P13 bigint,@P14 …

2
> =和>的步内统计值的基数估计
我正在尝试了解SQL Server如何尝试估计SQL Server 2014中的“大于”和“大于等于” where子句。 我想我确实了解基数估算,例如当我踏上台阶时 select * from charge where charge_dt >= '1999-10-13 10:47:38.550' 基数估计为6672,可以很容易地计算为32(EQ_ROWS)+ 6624(RANGE_ROWS)+ 16(EQ_ROWS)= 6672(以下屏幕截图中的直方图) 但是当我这样做 select * from charge where charge_dt >= '1999-10-13 10:48:38.550' (将时间增加到10:48,所以不是一步) 估计是4844.13。 该如何计算?

1
Amazon RDS MySQL 5.5 Innodb Lock超过等待超时
自从移至Amazon RDS以来,我们就遇到了一些非常疯狂的性能问题,而今天我们开始遇到锁定问题。因此,我认为这只是超时问题,因此检查了我们使用的内存。我们交换了大约70MB的内存。我用mysqltuner进行了一次内存巫婆搜索,它说最大可能的内存使用率为400%。现在,由于Percona的配置向导,我将其降低到100%以上。 但是,我们仍然存在此锁定问题,因此我假设它与内存/交换无关。为什么我仍然收到停工通知?这里发生了什么? 我相信重新启动可以解决问题,但这不应该是解决方案。将来我们可以做些什么来防止这种情况发生?我尝试刷新查询缓存和表-起作用了。 多亏了RDS:/ 我可以提供以下大量信息: 查询 INSERT INTO `myTable` (`firstName`, `lastName`, `email`) VALUES ('Travis', 'B...', '...@gmail.com') 错误信息 Lock wait timeout exceeded; try restarting transaction 表架构 CREATE TABLE IF NOT EXISTS `myTable` ( `id` int(15) NOT NULL AUTO_INCREMENT, `firstName` varchar(255) COLLATE utf8_unicode_ci NOT NULL, `lastName` varchar(255) COLLATE utf8_unicode_ci NOT NULL, …



4
如何处理500M +项目的查询
我的数据结构如下: date: <timestamp> filter_a: <integer> -> range [0, 1000] filter_b: <integer> -> range [0, 1000] filter_c: <integer> -> range [0, 86400] filter_d: <integer> -> range [0, 6] group: <string> second_group: <integer> variable_a: <float> variable_b: <float> variable_c: <float> a couple more no very important 我需要执行以下查询: 第一: 通过筛选数据date,filter_a,filter_b,filter_c和其他人 其次,用过滤后的数据: 计算所有记录 得到平均的variable_a,variable_b并variable_c 得到标准差的variable_a,variable_b并variable_c …

3
加快Postgres部分索引的创建
我正在尝试在Postgres 9.4中为大型(1.2TB)静态表创建部分索引。 我的数据是完全静态的,因此我可以插入所有数据,然后创建所有索引。 在这个1.2TB的表中,我有一列名为run_id,它清楚地划分了数据。通过创建覆盖run_ids 范围的索引,我们获得了出色的性能。这是一个例子: CREATE INDEX perception_run_frame_idx_run_266_thru_270 ON run.perception (run_id, frame) WHERE run_id >= 266 AND run_id <= 270; 这些部分索引为我们提供了所需的查询速度。不幸的是,每个部分索引的创建大约需要70分钟。 看来我们受CPU限制(top正在显示该进程的100%)。 我有什么办法可以加快创建部分索引的速度? 系统规格: 18核至强 192GB内存 RAID中的12个SSD 自动真空关闭 maintenance_work_mem:64GB(太高了吗?) 表规格: 大小:1.26 TB 行数:105.37亿 典型索引大小:3.2GB(存在〜.5GB的差异) 表定义: CREATE TABLE run.perception( id bigint NOT NULL, run_id bigint NOT NULL, frame bigint NOT NULL, …

1
最新服务器上的性能降低
我们有几个生产中的数据库服务器,其中有四个具有非常相似的硬件配置。Dell PowerEdge R620,唯一的不同是2个最新的(购买和配置3个月前)具有RAID控制器v710、256GB RAM和CPU,是2个物理Xeon E5-2680 2.80GHz。旧版本(大约在1年前购买和配置)具有RAID控制器v700、128GB RAM并运行在第2台物理Xeon E5-2690 2.90GHz上。BIOS已更新,所有驱动程序已更新为最新版本,等等。所有正在运行的SQL Server 2008R2 Enterprise(SP1)已更新为最新CU和Windows 2012R2 Standard。两者都在200 GB SSD x5 RAID10上运行。每个数据库上仅运行一个数据库,使用调用SSIS程序包的作业进行同步。我们的系统管理员已进行了大量性能和压力测试,以确保我们没有任何硬件或网络遗漏配置或故障。不出所料,最新的表现出更好的性能结果。到目前为止,一切都很好。 在Kibana的屏幕截图中可以看到我们遇到的问题。黄色和橙色是2台较新的服务器(表上为6.7),在所有其他服务器之下。完全可见这2台新服务器的响应时间较慢。不仅如此,而且这2台服务器的负载也比2台旧服务器(表上的浅蓝色和深蓝色线-4,5)要少一些。 有几个监视脚本,用于收集有关性能计数器的信息。尽可能地利用DMV和第三个监视工具进行挖掘,我掌握了很多信息。但是这里应该有(ofc)我缺少的东西,因为我找不到这种较慢的响应时间的答案。 这两个最新的服务器使用的RAM较少,但是与其他较旧的服务器相比,这是可以预期的,因为它们的负载较低。 | Server Name| Mem_MB | Mem_GB | Server_RAM_GB | SQL_max_mem_GB| SQL_min_mem_GB | |------------|--------|--------------|---------------|---------------|----------------| | 4 | 41108 | 40.145263671 | 128 | 120 | 16 | | 5 | …
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.