相关疑难解决方法(0)

更改了 max_allowed_pa​​cket 并仍然收到“数据包太大”错误

我使用 mysqldump 创建一个用于备份的平面文件。我已使用此文件在备用服务器上重新创建数据库。我在命令行上通过 ssh 运行导入过程,但收到多个Packet too Large错误。

我用更大的 max_allowed_pa​​cket(即 1000M)重新启动了 mysql,但仍然收到错误消息。我什至尝试在导入文件中设置 max_allowed_pa​​cket,仍然收到错误。

有没有办法确保设置 max_allowed_pa​​cket 和/或使用 mysqldump 来创建不会导致此问题的文件?

以供参考:

未压缩的 mysqldump 文件约为 2GB

数据库类型是 INNODB

mysql mysql-5 mysqldump backup

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

MySQL 在插入大文件时出现“内存不足”错误。这个文件大小限制是从哪里产生的?

我正在使用 MySQL 数据库来存储文件。

我使用的表结构如下:

+--------------+----------+------+-----+---------+-------+
| Field        | Type     | Null | Key | Default | Extra |
+--------------+----------+------+-----+---------+-------+
| AttachmentID | int(11)  | NO   | PRI | NULL    |       |
| Data         | longblob | NO   |     | NULL    |       |
+--------------+----------+------+-----+---------+-------+
Run Code Online (Sandbox Code Playgroud)

INSERT我使用的命令尽可能简单:

INSERT INTO table (AttachmentID, Data) VALUES (attachmentID, attachmentData);
Run Code Online (Sandbox Code Playgroud)

很明显, whereattachmentID是一个int,并且attachmentData是一个大字节数组。

阅读了关于如何在数据库中存储文件的几个指南后,我max_allowed_packet将配置文件中的设置增加到“512M”,对于我实际插入的文件来说已经足够了。

这适用于 30MB - 40MB 的几个文件。但是,现在我要插入 90MB+ 范围内的较大文件,我收到“内存不足”异常,需要的字节数等于我尝试插入的文件的大小。

该服务器是一个虚拟服务器,分配了 4GB 的空间,并且没有其他可能干扰的运行。

为什么我会收到较大文件的内存不足错误,而不是较小的文件? 这个文件大小限制来自哪里?

我在下面包含了我的配置文件:

[client]
port        = 3306
socket …
Run Code Online (Sandbox Code Playgroud)

mysql memory

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

mysql InnoDB 中的许多 NULL 列是否有害?

在探索 InnoDB 的聚集 B 树索引系统时,我认为许多 NULL(或小)列的存在对 InnoDB 性能没有显着影响。

多余列的存在是否会降低 mysql 的性能?

PS我尝试了实际测试,但没有显着效果。不过我觉得应该是在重载的情况下比较的。这就是我很想了解关于这件事的技术推理的原因。

mysql innodb mysql-5 performance null

6
推荐指数
2
解决办法
9160
查看次数

恢复后不同的 MySQL 数据文件大小

我在数据库管理方面很新。我现在公司的数据库架构是主从复制。我们使用的是 MySQL 5.0.86 版。

几周前,我们升级了公司的主应用程序。此升级为其数据库的所有表添加了一列。升级前,我们的 ibdata 大小约为 3.1GiB。升级后是~5.2GiB。

今天,我已经用 mysqldump 完成了一个完整的备份恢复测试。恢复后,ibdata 大小约为 3.6 GiB。标准选择在恢复中显示与原始数据库中相同的数据。

我已经通过 select to information_schema 检查了数据大小(CUSTODIA 是我们主应用程序的名称):

select SUM(DATA_LENGTH+INDEX_LENGTH) from TABLES where TABLE_SCHEMA='CUSTODIA';
Run Code Online (Sandbox Code Playgroud)

这是主数据库中的结果:

+-------------------------------+
| SUM(DATA_LENGTH+INDEX_LENGTH) |
+-------------------------------+
|                    5683345068 |
+-------------------------------+
Run Code Online (Sandbox Code Playgroud)

这是恢复数据库的结果:

+-------------------------------+
| SUM(DATA_LENGTH+INDEX_LENGTH) |
+-------------------------------+
|                    3735748608 |
+-------------------------------+
Run Code Online (Sandbox Code Playgroud)

我的问题:

  1. 为什么原始和恢复的数据库大小之间存在这种差异?
  2. 尽管大小不同,但假设恢复的数据库没问题是否安全?
  3. MySQL如何计算data_length?是估价吗?
  4. 我可以在不停机的情况下安全地将生产的 ibdata 文件大小减少到 3.6GiB 吗?

对此的任何想法将不胜感激。谢谢你。

mysql innodb mysqldump backup size

5
推荐指数
1
解决办法
8151
查看次数

max_allowed_pa​​cket 如何影响数据库的备份和恢复?

我有一个基于 mysql 5.0.75-0Ubuntu10.2 的数据库,在 Ubuntu 9.04 下运行。我在该数据库中有一个带有中等 blob 列的表。我一直在使用 automysqlbackup 对数据库进行夜间备份/转储,然后定期将它们恢复到我们拥有的临时服务器或我的 MacBookPro。

我们最近在恢复与数据包大小相关的错误时遇到了一些麻烦。上周晚些时候,我将 automysqlbackup 中的 max_packet_size 设置更改为 1MB(未指定)。更改后,数据库备份将在带有 blob 列的表处停止。实际上,它在该表中的第一条记录处停止。我是否必须将 max_packet_size 设置设置为至少与该列中存储的最大 blob 一样大?

mysql mysqldump backup

5
推荐指数
1
解决办法
3396
查看次数

MySQL 和 PostgreSQL 中的聚集索引性能考虑

在MySQL/InnoDB中,聚集索引与主键同义,因此选择一个差的主键会影响数据库性能,即使用UUID作为PK是数据库写入的性能杀手。

现在,在 PostgreSQL 中,不存在像 MySQL 中那样的集群限制。如果我选择UUID作为PK有什么影响?PostgreSQL 中是否也像 MySQL 一样存在数据库写入性能杀手?

mysql postgresql performance primary-key clustered-index

5
推荐指数
1
解决办法
2283
查看次数

什么比长斑点大?

longblob是Mysql最大的数据类型。如果我想保存大于 4gb(longblob)的东西,我该怎么做?。

我说的是 Mysql v-5.+

mysql datatypes

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