标签: memory

MySQL 集群 RAM 要求

从 MySQL 5.1 开始,数据不再需要完全在内存中。

我读过索引列(我认为整个索引结构)必须仍在内存中(MySQL High Availability,2010,第 533 页“MySQL Cluster 将所有索引列保留在主内存中”)。

鉴于此,如果没有足够的内存(即,一个巨大的数据库(> 100GB 或 1TB),在具有低内存配置的服务器上运行(例如,2 个数据节点,每个节点具有 1GB 的 RAM))会发生什么情况?

mysql memory ndbcluster

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

同时创建多个mysql临时表是不是很糟糕?

我需要进行大量的统计分析才能向用户提供一些数据。目前,我从 mysql 捕获数据并通过PHP数组处理它们。但是,mysql 临时表要好得多(比 PHP 数组效率更高、速度更快;显然是由于它们的机制)。

我的暂定解决方案是在每次请求(即连接)时形成一个临时表来导入和处理数据。但是,我不确定同时创建多个临时表是否有缺点?

这会给mysql服务器带来问题吗?或者我可以在众多同时请求中使用它作为 PHP 数组的替代方案?

mysql memory mysql-5.5 temporary-tables

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

由于内存配置错误,无法启动 Oracle (11g1) (ORA-00837)

我决定减少本地开发人员实例的内存分配,并被告知以下命令完成了这项工作;

alter system set memory_max_target = 512M scope = spfile;
Run Code Online (Sandbox Code Playgroud)

我猜是这样,因为我无法再启动有问题的 Oracle 实例。这是我尝试以非 DBA 用户身份连接时遇到的错误;

ORA-01034: ORACLE not available
ORA-27101: shared memory realm does not exist
Run Code Online (Sandbox Code Playgroud)

以 SYSDBA 身份连接时,我得到以下信息;

Connected to an inactive instance.
SQL>startup nomount;
ORA-00837: Specified value of MEMORY_TARGET greater than MEMORY_MAX_TARGET
SQL>alter system set memory_max_target = 2G scope = spfile;
ORA-01034: ORACLE not available
Run Code Online (Sandbox Code Playgroud)

(“连接到非活动实例。”是我对本地化错误消息的翻译,可能不完全正确) 所以,我处于 ​​catch 22 情况,我无法在不启动的情况下更改内存参数,我可以不启动。

有没有办法离线更改这些参数?

oracle oracle-11g memory

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

SQL Server 未使用可用内存

Windows 2008R2 Enterprise 上的 SQL Server 2008 R2 标准版(64 位)

  • 服务器有超过 300 GB 的内存,但控制面板中的总内存使用量从未超过 86 GB
  • 将 SQL 配置为使用最大内存量
  • 即使在大量使用情况下 - CPU 超过 80% 数分钟

  • 专用 SQL Server

  • 几个大型数据库
  • 一个频繁使用的表的索引大小超过 10 GB

将服务帐户设置为在内存中锁定

这是正常的吗?

我可以测试什么?

我可以让 SQL Server 使用更多内存吗?

sql-server memory sql-server-2008-r2 hardware

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

SQL Server 最大和最小内存配置

在这个用例中,最小内存和最大内存的正确设置是什么?

该服务器有 8GB 内存,双 Intel Xeon 处理器,运行 Windows Server 2008 R2 / Sql Server 2008 标准版。它正在运行多个大小从 30GB 到 5GB 的数据库。

最初将内存使用设置为默认设置(min=0 max=2,147,483,647)。在这些设置中,sqlservr.exe 占用了大部分内存使用量,并且服务器最终需要每天或两天重新启动。一开始它会正常运行,但在一天之内开始在简单的操作上超时,比如使用主键查找记录。

我已经更改了 min=4,096 和 max=6,144。这导致仅使用 1.4GB 内存。但是,现在所有四个 CPU 都以 50-60% 的 CPU 使用率持续运行。尽管服务器要稳定得多,但任务的执行时间大约要长 1/3。

sql-server memory sql-server-2008-r2

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

运行时获取mysql查询的内存使用情况

是否可以在正在运行的查询中获取已用内存?

就像是:

mysql> SELECT MEMORY_PEAK as memory; #return memory usage by mysql before run query
mysql> SELECT id FROM table WHERE id>2; #run query
mysql> SELECT MEMORY_PEAK as memory; #return memory usage by mysql after run query
Run Code Online (Sandbox Code Playgroud)

并返回类似(返回 17kb)的内容:

+----------+
|  memory  |
+----------+
|  20100   |
+----------+

+------+
|  id  |
+------+
|  3   |
+------+

+----------+
|  memory  |
+----------+
|  2026767 |
+----------+
Run Code Online (Sandbox Code Playgroud)

或者

mysql> USAGE SELECT id FROM table WHERE id>2;

并返回类似(返回 17kb)的内容:

+---------+
|  USAGE …
Run Code Online (Sandbox Code Playgroud)

mysql memory

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

Improving RAM and CPU utilization by PostgreSQL 9.6

I've been running a function on the database that is going into each table, ALTER COLUMN on all columns of a certain data type, and CAST to remove trailing zeros. About 115 tables varying from a few thousand records to a few hundred thousand records. It has been running for almost 24 hours and my approximate calculation until time of completion is about 58 hours.

I have htop up and checking on it regularly.

I should mention this is a …

postgresql optimization memory centos cpu

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

增加 SQL Server 产品上的最大内存设置

我有一个带有 5 个实例的生产盒。

版本:SQL Server 2014 SP3 企业版。

我发现即使机器分配了大约 400GB 的内存,所有 5 个实例的组合MAX MEMORY设置也小于 200GB。

实例不会受到内存压力的影响,但是由于我们已经分配了该内存,所以不使用它是一种浪费。

我想将其增加到更高的值,为操作系统保留 10%(某些实例的分配将高于其他实例)。

不过,我以前从来没有对这个设置做过这么大的增加。

我知道这是一个不需要重启的动态设置,但是,我想知道以下几点:

  • 我应该分两个阶段增加(即增加一半,等待一周然后再次增加)?
  • 如果 SQL Server 突然有更多的内存可以使用,是否会突然中断(或导致性能下降)?

我们没有启用内存设置中的锁定页面,也没有启用跟踪标志 834

sql-server memory configuration sql-server-2014

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

同一个表中的多个 BIT 数据类型列

考虑来自 Microsoft SQL 文档页面的以下信息:

SQL Server 数据库引擎优化位列的存储。如果表中有 8 个或更少位列,则这些列存储为 1 个字节。如果有 9 到 16 位列,则这些列存储为 2 个字节,依此类推。

请参阅:https : //docs.microsoft.com/en-us/sql/t-sql/data-types/bit-transact-sql?view=sql-server-2017

所以,如果我创建一个这样的新表:

CREATE TABLE MyTable (
    Id int PRIMARY KEY,
    Value1 bit,
    Value2 bit,
    Value3 bit,
    Value4 bit,
    Value5 bit,
    Value6 bit,
    Value7 bit,
    Value8 bit)
Run Code Online (Sandbox Code Playgroud)

...然后一行中的所有位列(Value1、Value2、...Value8)应占用一个字节。或者?

当我们仔细观察时,一行的 Value1 字段内部可以包含值 0、1 或 NULL。这意味着该字段实际上是三态值或三元值。2 个这样的值可以表示 3*3=9 个值的字典。8 个这样的值是一个包含 6561 个值的字典。

如果我们考虑这样一行的内存占用,8 位应该占用一个字节。这意味着这一字节编码 6561 个值而不是 256 个值。这显然是错误的。

因此,要么 MS SQL 文档具有误导性,要么我们在这里谈论一些量子计算。当然是前者,但我真正想知道的是这个问题的答案:可空位(当然,SQL Server 位默认可以为空)是如何真正存储在 SQL Server 底层结构中的?

null sql-server memory

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

SQL Server 的内存要求

我们有一台 256 GB RAM 的机器。
SQL Server 的最大服务器内存设置为 180 GB。

在 180 GB 中,SQL Server 通常使用:

  • 数据库缓存内存 - ~ 140-150 GB
  • 计划缓存 - ~ 10 GB
  • 被盗的服务器内存:~ 30 GB
  • 可用内存:~ 9 GB
  • 授予的工作空间内存:这通常相当低,峰值可能为 0.5-1 GB

缓冲区高速缓存命中率 - 始终徘徊在 99.9% 以上。
页面预期寿命是相当高的数字。

数据库数据文件的总大小 - 650 GB。
数据增长速度约为每天 500-1500 MB(但是!较旧的数据每 6-8 个月就会删除一次,因此基本上数据文件的增长速度要慢得多)。

问题

需要将SQL Server迁移到另一台机器。当 SQL Server 2022 发布时,就以它为目标。

它是混合 OLTP 和 OLAP 类型的工作负载,许多应用程序使用相同的数据库;大部分 RAM 被缓存的数据库页面使用,这意味着 SQL Server 不必一直从磁盘读取它。

感觉新机器 128 GB 就足够了,最大服务器内存设置为 ~ 110 GB,为操作系统留下 18-13 GB。

目标服务器将位于 Azure VM 中,您无法独立地扩展 …

sql-server memory sql-server-2017

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