标签: optimization

优化我的更新顺序

每当用户更新他的个人资料时,我们都会进行一组查询,如下所示:

DELETE FROM `user_likes` WHERE `ID` = $id
INSERT INTO `user_likes` VALUES (DEFAULT, $id, $interest_id, $interest_name)
Run Code Online (Sandbox Code Playgroud)

有没有办法一步完成这一切?必须有办法,因为每个用户的兴趣 ID 都是不同的。请记住,实际上永远不必删除数据——它是一个一直在增长的集合。

mysql optimization update

4
推荐指数
1
解决办法
158
查看次数

2500 亿行 - 大规模计算互连性

我有一个大约 700k 行的表,每行都由一个唯一的 itemnumber 标识。

通过计算指示关联强度的单个数值或两个项目之间的数学“距离”,每行/项目可以与表中的任何其他行/项目相关联,没有关联/无限距离由“0”表示" 而数值“1”表示相同项目/无距离。

这些关联编号难以计算/计算密集并且基于存储在单独数据库中的数据。因此,为所有行组合预先计算一次,然后只为添加的新行(每年 <4k 新行)预先计算它们似乎是有道理的。

生成的关联表可能如下所示:

itemnumber    |  associatedwithitem        | associationstrength

23920390293   |   12356456885              | 0.12255888644888

45468411516   |   44565464884              | 0.91155684161123

45648855222   |   98956221818              | 0.00000000000000

45468411516   |   23920390293              | 0.46813185844468
Run Code Online (Sandbox Code Playgroud)

然而,这样一个表的大小将是巨大的:((700,000 x 700,000) - 700,000)/2 = 244.999.650.000 = 大约 2500 亿行,即使在丢弃所有自连接(公式中的 -700,000)并存储之后每个连接只有一种方式(公式中除以二)。

我将只运行一种类型的查询,如下所示:

“给定一个 itemnumber 列表(见上表示例),计算平均(mean)关联数。”

针对关联表运行的每个 itemnumber 列表通常包含 < 1k itemnumber,但很少会大到 50k。但是因为 1k 个 itemnumber 的列表中的每个数字都将与 700k 个其他 itemnumber 相关联,这样的查询将提取 700,000 x 1000 = 700,000,000 个关联号,然后需要计算这 700m 个关联号的平均值。

对以下方面的任何想法:

  1. 保存此表的最佳数据管理系统
  2. 结构(2500 亿行 vs …

schema performance database-design optimization

4
推荐指数
1
解决办法
283
查看次数

如何正确估计我的 RAID 10 磁盘可以提供的平均 I/O 操作数?

磁盘可以维持的平均每秒输入/输出操作是调优 MySQL / InnoDB 数据库的一个非常重要的因素,因为它推动了脏 InnoDB 缓冲池页面刷新回磁盘的速度。

有没有一种方法或公式可以用来估计我的 RAID 10 磁盘阵列可以运行的每秒平均 I/O 操作数?

optimization storage tuning

4
推荐指数
1
解决办法
3999
查看次数

在 Postgresql 存储过程中正确使用 VOLATILE COST(和 ROWS)指示

在查看pl/pythonand 的几个示例时pl/pgsql,我看到许多(但不是全部)使用volatile cost.

IE:

CREATE OR REPLACE FUNCTION my_function()
RETURNS setof record AS
$BODY$
-- code
$BODY$
LANGUAGE plpgsql VOLATILE
COST 100;
Run Code Online (Sandbox Code Playgroud)

搜索有关volatile cost我的更多信息时发现(乍一看)大约至少 90% 的网络示例都在使用volatile cost 100,有时有时会使用volatile cost 1。(因为rows它是 1000)。

据我了解,此指示有助于查询计划优化器决定如何在短路布尔运算中设置优先级。

如果我开始给出估计值costrows对我的每个存储过程进行估计,是否过早优化?我应该只在我想优化某些查询时才这样做吗?选择成本的良好价值是一门艺术吗?

我知道命令explain,我还没有学会。这个命令对估计有帮助cost吗?

postgresql stored-procedures optimization postgresql-9.1

4
推荐指数
1
解决办法
7937
查看次数

PostgreSQL FTS 和 Trigram-similarity 查询优化

我最近开始研究PostgreSQL,我有大约1200 万行要处理,我想在其中应用Full Text Search。我之前没有处理此类数据库的任何经验。我已尝试优化查询,但我怀疑它是否已完全优化。

现在我正在使用GIST 索引,因为我读到GIN 索引中的更新速度较慢,并且我的数据库将定期更新。

我现在只需要关注数据库的两列merchant varchar(80)product varchar(400).

我需要使用 FTS 查找产品,并且即使商家拼写错误,我也正在尝试获取该产品。

我在大约30K行的示例数据库上运行了一些查询,以获得以下结果:

  • 首先,我运行基本的 FTS 查询来分析结果。

    explain analyze
    select count(*) from products
    where to_tsvector('english', product) @@ to_tsquery('hat');
    
    Run Code Online (Sandbox Code Playgroud)
Aggregate  (cost=2027.27..2027.28 rows=1 width=0) (actual time=349.032..349.032 rows=1 loops=1)  
->  Seq Scan on products  (cost=0.00..2026.90 rows=147 width=0) (actual time=43.322..348.961 rows=307 loops=1)
 Filter: (to_tsvector((product)::text) @@ to_tsquery('hat'::text))
Total runtime: 349.140 ms
Run Code Online (Sandbox Code Playgroud)

postgresql index optimization full-text-search pattern-matching

4
推荐指数
1
解决办法
4509
查看次数

使用 MySQL Workbench 优化 MySQL 数据库

我实际上有几个问题。

首先,我找到了这个关于优化的信息:https : //stackoverflow.com/questions/5474662/mysql-optimize-all-tables

问题是,我似乎在任何地方都没有 mysqlcheck 程序。我正在使用 MySQL 工作台。我过去可能使用过其他 MySQL 版本。当我查找 mysql 时,我在 Program Files 文件夹中找到了一个 MySQL 文件夹,其中包含一个 MySQL Server 5.5 文件夹。这个有一些 .ini 文件和 bin、dat 等目录,但没有可执行文件。然后在 Program Files (x86) 中有另一个 MySQL 文件夹。其中有几个文件夹,包括:MySQL Documentation 5.5.30、MySQL Installer、MySQL Notifier、MySQL Workbench CE 5.2.47 和 Samples and Examples 5.5.30。唯一具有 mysql.exe 的是 MySQL Workbench CE 5.2.47。但它没有mysqlcheck.exe。

我在 Workbench 中摸索,找不到任何维护或优化功能。

我的数据库是 17 GB,我从大表中删除了一些大文本字段,我希望能恢复空间,因为我的操作系统正在向我大喊要腾出更多空间。Workbench 是否有优化的能力,如果有,我该怎么做?如果没有,我可以安装什么才能做到这一点?

mysql optimization mysql-workbench

4
推荐指数
1
解决办法
2万
查看次数

优化对两个大表的查询

我的系统中有一个非常重要的查询,由于表上的数据量很大,执行时间太长。我是一名初级 DBA,我需要为此进行最佳优化。每个表大约有 8000 万行。

表是:

tb_pd

   Column            |  Type   | Modifiers | Storage | Stats target | Description 
---------------------+---------+-----------+---------+--------------+-------------
 pd_id               | integer | not null  | plain   |              | 
 st_id               | integer |           | plain   |              | 
 status_id           | integer |           | plain   |              | 
 next_execution_date | bigint  |           | plain   |              | 
 priority            | integer |           | plain   |              | 
 is_active           | integer |           | plain   |              | 
Indexes:
    "pk_pd" PRIMARY KEY, btree (pd_id)
    "idx_pd_order" btree (priority, next_execution_date) …
Run Code Online (Sandbox Code Playgroud)

postgresql optimization index-tuning query-performance

4
推荐指数
1
解决办法
5466
查看次数

SQL Server 基线和性能优化

我一直在性能故障排除方面苦苦挣扎,包括 SQL 性能的基线和故障排除。

任何人都可以对此提供帮助或指出我可以在哪里获得有关此主题的有用信息?

performance sql-server optimization

4
推荐指数
2
解决办法
1601
查看次数

使用 NOCOUNT 提高程序性能

我希望提高某个程序的性能,我想从插入SET NOCOUNT ON.

我已经阅读了几篇关于这个主题的文章:

亚伦·伯特兰

SET NOCOUNt ON 提高 SQL Server SP 性能

但我不太明白的是,如果每个程序都需要一次,还是每次“开始/结束”时都需要插入它

例如,在下面的过程中 - 我是否应该插入SET NOCOUNT ON右侧并设置最后一个变量:set @PrintInfo = 'No Trip Number...

或者我是否需要SET NOCOUNT ON在程序中的每个“开始”之后插入:

Create procedure [dbo].SSIS_UpdateDriveResults
(
@RSADriveID nvarchar (50),
@ProcedureID int,
@Registered int,
@Performed  int,
...
)
as 

set @ResultError = 0
set @ResultMessage = ''

declare @Id int
declare @Name varchar(64)
declare @DriveId int
declare @ErrorMessage nvarchar(255)
...

Set @ExternalIDs = cast(@RSADriveID as nvarchar(50))
set @IsFixedSite = …
Run Code Online (Sandbox Code Playgroud)

sql-server-2008 sql-server stored-procedures optimization

4
推荐指数
1
解决办法
3354
查看次数

Mongodb 高锁百分比/慢查询

我正在处理一个使用 MongoDB 的应用程序,该应用程序收到了相当多的传入请求,我注意到响应随着请求数量的增加而变慢。

我怀疑数据库效率低下。我在一个较高负载期间运行了 mongostat,结果似乎表明锁定百分比很高:

insert  query update delete getmore command flushes mapped  vsize    res faults           locked db idx miss %     qr|qw   ar|aw  netIn netOut  conn set repl       time
*0   1120    479     *0     179   472|0       0  72.1g   146g  1.31g      0 server-prod:15.7%          0       0|0     1|0     1m     4m   298 rs0  PRI   15:37:28
*0   1192    509     *0     178   428|0       0  72.1g   146g   1.3g      0 server-prod:18.9%          0       0|0     0|0     1m     5m   298 rs0  PRI   15:37:29
*0   1107    456     *0     174   362|0       0  72.1g   146g …
Run Code Online (Sandbox Code Playgroud)

performance mongodb optimization query-performance

4
推荐指数
1
解决办法
6106
查看次数