标签: tuning

可以让 MySQL 使用多个核心吗?

我已经看到一些专用的 MySQL 服务器,它们只使用一个内核。我比 MySQL 的 DBA 更擅长开发,所以需要一些帮助

设置

服务器非常庞大,具有 OLAP/DataWarehouse (DW) 类型的负载:

  • 主要:96GB RAM,8 核 + 单个 RAID 10 阵列
  • 测试:32GB RAM,4核
  • 最大的 DB 是 540 GB,总共大约 1.1TB,主要是 InnoDB 表
  • Solaris 10 Intel-64
  • MySQL 5.5.x

注意:最大的 DB 是从 OLTP DR 服务器复制的 DB,DW 就是从这里加载的。它不是完整的 DW:仅持续 6 个月到 6 周,因此它比 OLTP DB 小。

对测试服务器的观察

  • 3 个独立的连接
  • 每个都有一个并发的(和不同的) ALTER TABLE...DROP KEY...ADD INDEX
  • 这 3 个表有 2.5、3.8 和 450 万行
  • CPU 使用率上升到 25%(一个核心被最大化)并且不会更高
  • 3 次 ALTER 需要 12-25 分钟(最小的一次需要 4.5 分钟)

问题

  1. 需要什么设置或补丁才能允许使用多个内核?
    也就是说,为什么 …

mysql innodb performance tuning mysql-5.5

140
推荐指数
5
解决办法
22万
查看次数

单个查询是否比连接更快?

概念性问题:单个查询是否比连接更快,或者:我应该尝试将客户端所需的所有信息都压缩到一个SELECT 语句中,还是只使用看起来方便的尽可能多的信息?

TL;DR:如果我的联合查询比运行单个查询花费的时间更长,这是我的错还是可以预料的?

首先,我不是很精通数据库,所以可能只是我,但我注意到当我必须从多个表中获取信息时,通过对单个表的多个查询来获取这些信息“通常”更快(也许包含一个简单的内部连接)并在客户端将数据拼凑在一起,以尝试编写一个(复杂的)连接查询,我可以在一个查询中获取所有数据。

我试图把一个非常简单的例子放在一起:

SQL小提琴

架构设置

CREATE TABLE MASTER 
( ID INT NOT NULL
, NAME VARCHAR2(42 CHAR) NOT NULL
, CONSTRAINT PK_MASTER PRIMARY KEY (ID)
);

CREATE TABLE DATA
( ID INT NOT NULL
, MASTER_ID INT NOT NULL
, VALUE NUMBER
, CONSTRAINT PK_DATA PRIMARY KEY (ID)
, CONSTRAINT FK_DATA_MASTER FOREIGN KEY (MASTER_ID) REFERENCES MASTER (ID)
);

INSERT INTO MASTER values (1, 'One');
INSERT INTO MASTER values (2, 'Two');
INSERT …
Run Code Online (Sandbox Code Playgroud)

performance join tuning application-design

46
推荐指数
2
解决办法
8万
查看次数

如何确定最佳sort_buffer_size?

我从一个示例配置文件中读取了以下内容:

# Sort buffer is used to perform sorts for some ORDER BY and GROUP BY
# queries. If sorted data does not fit into the sort buffer, a disk
# based merge sort is used instead - See the "Sort_merge_passes"
# status variable. Allocated per thread if sort is needed.
Run Code Online (Sandbox Code Playgroud)

我有几个使用文件排序的查询。如何确定查询在不碰到磁盘的情况下顺利运行所需的缓冲区大小是多少?

mysql myisam mariadb tuning sorting

13
推荐指数
2
解决办法
7万
查看次数

DTA 建议创建统计信息

我刚刚通过 DTA 运行了一个 T-SQL 查询,其中一项建议是在作为 SQL 代码文件中许多查询的一部分的列之一上创建统计信息。

我的问题是,统计数据究竟如何帮助提高性能?

sql-server-2008 sql-server statistics tuning

10
推荐指数
2
解决办法
3313
查看次数

学习优化 SQL 查询和理解执行计划 - 资源?

我发现自己在工作中编写了越来越多的 SQL 查询(主要是 Oracle 11g,但也有一些是 SQL Server 2005-2008),并且已经开始为分析师团队的其他成员创建一些非常复杂的视图。

他们大多都运行得很好,但其中一些不太好。所以...

  • 我如何学习调整我的查询?
  • 我需要学习阅读/执行执行计划吗?

和...

  • 您可以推荐哪些书籍/网站来了解 SQL 查询调优 1) 一般 2) 专门针对 Oracle 11g?

我们这里有一些优秀的 DBA,但他们太忙了,无法帮助我们调整我们编写的每个查询。

我在 Amazon 上为 Oracle 找到的大多数书籍似乎都面向整体数据库优化和/或写于 8-10 年前。

非常感谢您的建议:)

performance oracle-11g-r2 tuning query-performance

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

如何调整 innodb_read_io_threads ?

innodb_read_io_threads和的默认值为innodb_write_io_threads4。如何检查您的服务器负载是否需要更高数量的线程?

正如我定期检查的那样show engine innodb status \G,没有可追踪的活动:

--------
FILE I/O
--------
I/O thread 0 state: waiting for completed aio requests (insert buffer thread)
I/O thread 1 state: waiting for completed aio requests (log thread)
I/O thread 2 state: waiting for completed aio requests (read thread)
...
I/O thread 32 state: waiting for completed aio requests (write thread)
I/O thread 33 state: waiting for completed aio requests (write thread)
Pending normal aio reads: [0, 0, 0, 0, …
Run Code Online (Sandbox Code Playgroud)

mysql innodb mariadb tuning

8
推荐指数
1
解决办法
7740
查看次数

MySQL 5.5 - 在高端系统上确定正确的 write[read]_io_threads?

特别是双 CPU 32 核 - 128RAM - RAID 10 SSD。Ubuntu 64 服务器。

有时 Innodb 负载很重 - 每秒约 2000 多个查询。重读和写。

目前我们在默认的 write_io_threads 上运行 4。

我们是否“削弱”了我们服务器的能力?在 max write_io_threads=64 和 read_io_threads = 64 上运行它是否安全?

这个数字是如何确定的?

mysql innodb performance tuning mysql-5.5

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

使用 in 语句在简单查询中进行哈希匹配内连接

我正在运行以下查询的执行计划:

select m_uid from EmpTaxAudit 
where clientid = 91682 
and  empuid = 42100176452603
and newvalue in('Deleted','DB-Deleted','Added')
Run Code Online (Sandbox Code Playgroud)

下面是执行计划:

执行计划

我在 ClientId 和 NewValue 列上的 EmpTaxAudit 表上有一个非聚集索引,上面显示为执行的 14.9%:

CREATE NONCLUSTERED INDEX [idx_EmpTaxAudit_clientid_newvalue] ON [dbo].

[EmpTaxAudit]
(
    [ClientID] ASC,
    [NewValue] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON)
Run Code Online (Sandbox Code Playgroud)

我还有一个非聚集唯一索引 PK,如下所示:

ALTER TABLE [dbo].[EmpTaxAudit] ADD  CONSTRAINT [PK_EmpTaxAudit] PRIMARY KEY NONCLUSTERED 
(
    [ClientID] ASC,
    [EmpUID] ASC,
    [m_uid] ASC,
    [m_eff_start_date] ASC,
    [ReplacedOn] …
Run Code Online (Sandbox Code Playgroud)

sql-server execution-plan tuning

7
推荐指数
1
解决办法
3135
查看次数

大型数据库的备份调整

我正在使用压缩、写入多个文件以及更改BufferCountMaxTransferSize选项来调整 SQL Server 备份。我有一个 SQL Server 实例,其中包含 4 TB 数据库和几个从几 MB 到 150 GB 的较小数据库。

我的问题是,我是否可以开始使用 150 GB 数据库进行调整,然后将这些设置应用到 4 TB 备份,只需进行最小的更改,或者 4 TB 是否需要从头开始拥有自己的“调整会话”?由于通常需要多次备份尝试才能拨入设置,因此我尝试在可能的情况下快速开始调整 4 TB 数据库。

sql-server backup tuning

6
推荐指数
1
解决办法
2025
查看次数

查询调优问题

我在尝试调整以下查询时遇到了麻烦。我曾经 100% 专注于基础设施方面,但自今年 8 月以来,我在一家处理卡公司工作,该公司只要求我的“阴暗面”——查询调整技能。

如果您能为我提供提高查询性能的建议和技巧,我将不胜感激。以下是表格:

CREATE TABLE [dbo].[Delivery](
[Id] [int] IDENTITY(1,1) NOT NULL,
[Address_Name] [varchar](120) NULL,
[Address_Street] [varchar](120) NULL,
[Address_Complement] [varchar](120) NULL,
[Address_City] [varchar](120) NULL,
[Address_District] [varchar](120) NULL,
[Address_Number] [varchar](120) NULL,
[Address_State] [varchar](120) NULL,
[Address_ZipCode] [varchar](120) NULL,
[OsFk] [int] NOT NULL,
[WebstoreOrderId] [int] NOT NULL,
[CourierType] [int] NULL,
 CONSTRAINT [PK_Delivery] PRIMARY KEY CLUSTERED 
(
    [Id] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]


CREATE TABLE …
Run Code Online (Sandbox Code Playgroud)

sql-server t-sql tuning

6
推荐指数
1
解决办法
114
查看次数