gpt4 book ai didi

php - MySQL,longtext、text 或 blob 哪个更高效?提高插入效率

转载 作者:可可西里 更新时间:2023-11-01 06:40:02 28 4
gpt4 key购买 nike

我正在将大量数据从多个数据库迁移到一个数据库中。作为中间步骤,我将数据复制到每个数据类型和源数据库的文件中,然后将其复制到我的新数据库中的一个大表中。

新表的结构很简单,叫做migrate_data。它由一个id(主键)、一个type_id(在数据类型集中递增)、data(一个包含序列化PHP对象的字段,其中包含我正在迁移的数据)、source_db(指的是源数据库,显然)、data_type (标识我们正在查看的数据类型)。

我已经为除数据字段之外的所有内容创建了键和组合键。目前我将数据字段设置为长文本列。用户插入平均每次大约需要 4.8 秒。我能够在 table 上使用 DELAY_KEY_WRITE=1 将其缩短到 4.3 秒。

我想知道的是有没有办法进一步提高性能。可能通过更改为不同的数据列类型。这就是为什么我询问 longtext vs text vs blob。对于这种插入,有没有更有效的方法?

在你回答之前,让我给你多一点信息。我将所有数据发送到一个插入函数,该函数获取对象,通过序列化运行它,然后运行数据插入。它也正在使用 Drupal 6(及其 db_query 函数)完成。

任何效率提升都会很棒。

当前表结构:

CREATE TABLE IF NOT EXISTS `migrate_data` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`type_id` int(10) unsigned NOT NULL DEFAULT '0',
`data` longtext NOT NULL,
`source_db` varchar(128) NOT NULL DEFAULT '',
`data_type` varchar(128) NOT NULL DEFAULT '',
PRIMARY KEY (`id`),
KEY `migrated_data_source` (`source_db`),
KEY `migrated_data_type_id` (`type_id`),
KEY `migrated_data_data_type` (`data_type`),
KEY `migrated_data_id__source` (`id`,`source_db`),
KEY `migrated_data_type_id__source` (`type_id`,`source_db`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 DELAY_KEY_WRITE=1;

最佳答案

各种文本/blob 类型在 PHP 中的存储要求都是相同的,并且执行方式完全相同,除了文本字段需要进行字符集转换。 blob 字段不是。换句话说,当您存储二进制文件时,blob 适用于必须与输入时完全相同的二进制文件。文本字段用于存储可能/可以/将要从一种字符集转换为另一种字符集的文本数据。

关于php - MySQL,longtext、text 或 blob 哪个更高效?提高插入效率,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6749606/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com