问题标签 [database-optimization]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
mysql - MySQL:使用索引对大表执行更新
晚上,
我有一个大而简单的表,有近 3000 万行。该表具有大多数列的索引。对其执行任何更新需要很长时间,我想知道在完成对表的更改后删除索引并重新构建它们是否是个好主意?
我问的原因是因为我在这里阅读了一些帖子,人们无法在大表上重新构建索引。但是,我不明白为什么会这样,因为我可以在 20 分钟内从 2.2GB 文本文件中导入此表。
该表由几个小整数和 varchars 组成。
我运行的更新查询如下:
它们并不太慢,但我目前正在将其中一个字段从 varchar(4) 更改为 varchar(8),这需要很长时间。
我从命令行 (Linux) 运行更新查询。
sql - SQL中的delete语句很慢
我有这样的声明超时:
我试着像这样一次做一个:
到目前为止,它是 22 分钟,并且还在继续。
该表有 260,000 行,有四列。
有谁知道为什么这会这么慢以及如何加快速度?我在 [COL] 上确实有一个非唯一的非聚集索引,我正在执行 WHERE。我正在使用 SQL Server 2008 R2
更新:我桌上没有触发器。
database - 在数据库中存储 MD5 值
我们在系统中使用 MD5 值的十六进制表示。
将它们作为整数而不是字符串存储在我们的 MySQL DB 中是否明智?这会改进使用 MD5 列搜索表吗?
谢谢你
mysql - 是否应该始终将主键添加到 innodb 表中?
我有一些只有 2 个 int 列的 innoDb,它们是其他表主键的外键。
例如,一个表是 user_items,它有 2 列,userId,itemId,用户表和项目表的外键,如果更新或删除,则设置为级联。
我应该在这些表中添加第三列并使其成为主键,还是现在的方式更好,在性能或任何其他好处方面?
mysql - mysql/innodb 数据库大小如何影响性能?
我有一个 30 GB 的大型mysql
数据库,其中所有表都使用innodb
引擎。几乎所有这些空间都被一个大表(大约 25 GB)占用,我在其中以二进制格式存储大文本,但 99% 的查询使用其他较小的表。
我的服务器有 16 GB 内存,系统内存非常不足,总是使用交换,给我的用户带来了很多痛苦。我有我的innodb_pool_buffer_size
设置6G
。
我正在考虑通过将这些文本从数据库移动到文件系统来解决这个性能问题。
如果大多数查询不使用这个大表,将 25 GB 的文本移动到文件系统会解决这个问题吗?即使最大的 innodb 表没有过多地用于查询,数据库大小是否会影响服务器性能?
mysql - 加快 MySQL 中的多维 euclid 距离计算
我有下表存储有关图像的数据:
任务是计算收集到的数据之间的距离。目前,我正在使用一个 75 维(没错,3 * 25 = 75)欧几里德距离计算作为存储过程编程到数据库中:
用另一个子程序计算 2 75-dim 之间的实际距离。载体:
还有另一个子程序来计算两个值之间的平方差:
函数本身非常好,并返回在数学和逻辑上都正确的确定性结果。
当我想获得与给定图像“最接近”的图像时,问题就出现了——这意味着与任何给定图像距离最短的图像。为此,我使用另一个过程:
该数据库目前包含大约 30.000 张图像。这意味着 aCALL getSimilarImages(123, 10);
大约需要12秒才能完成。这对于任何应用程序来说都太长了,无论是基于 Web 的还是基于应用程序的。
所以,我想加快速度。我有哪些选择?您是否看到任何优化图像比较或计算距离过程的潜力?
我考虑过缓存过程的结果,但我不知道该怎么做。我还可以在添加新图像后立即将每张图像与其他图像进行比较,但这会使添加图像的过程非常漫长,这也是不可接受的。
如果有帮助,我可以提供有关系统设置的更多信息,但我感谢您提供的任何指示。目前的情况并不好,我真的需要做点什么,因为图像数据库只会随着系统启动的每一个小时而增长。
php - MySQL DB 通过 php 优化
我缺少的另一点(作为初学者)我在两个数据库之间有一个备份脚本,作为最后一步,我应该优化真实数据库以减少开销的大小。我有一个代码在我只使用一个数据库时有效,但我需要使用两个:
- 这应该说明 bckuser 被忽略了,我相信......
actconn 值:资源 ID #1
bckconn 值:资源 ID #2
mysql_error 说:
SELECT 命令拒绝用户 'bckuser'@'localhost' 用于表 '实际表'
知道我做错了什么吗?
更新: bckuser 不应该对它做任何事情,因为 actdbuser 是该数据库的根目录,但由于某种原因 SHOW TABLE 无法识别 $actconn ...
UPDATE2:我再次尝试了 opt ,唯一改变的是 $actdbname='db-name'; db-name
使用规范撇号和 $actdbname=' ' 工作时;
请注意这是在共享主机上,所以我无法更改数据库名称。
感谢@Corbin 有趣的想法,我试过但没有用,但我该如何调试呢?由于某种原因,我什至无法正确调试它...
sap-ase - 如何优化 Sybase ASE 数据库?
优化sybase数据库有哪些技巧?
做什么和不做什么?
database - postgresql 在数据库之间快速传输表
我有一个每天对数据进行分区的 postgresql 操作数据库和一个 postgresql 数据仓库数据库。为了将数据从操作数据库快速复制到 DWH,我想以最快的速度复制表并且使用最少的资源。由于这些表是按天分区的,我知道每个分区本身就是一个表。这是否意味着我可以以某种方式在机器之间复制数据文件并使用这些数据文件在 DWH 中创建表?在这种情况下,最佳做法是什么?
编辑:我将在这里回答所有问题: 1. 我正在构建一个 ETL。ETL 的第一步是复制对操作数据库影响较小的数据。2. 如果这不会减慢操作数据库的写入速度,我想复制数据。3. 更多数据,操作数据库不在我的响应范围内,但主要关注的是该数据库的写入时间。它每天写入大约 5 亿行,其中有几个小时加载更多,但没有几个小时根本没有写作。4. 我遇到了一些工具/方法——复制、pg_dump。但是我找不到可以比较工具以了解何时使用什么以及了解什么适合我的情况的东西。
mysql - 设置 null 后 MySQL VARCHAR 存储
我有一些 varchar(512) 列的大型 MySQL InnoDB 表。下一个插入的行取决于先前插入的。插入新行后,先前插入行的 varchar 字段将无状态。以前插入的行总是被标记为“已处理”(通过执行更新查询),但 varchar 字段没有被删除。该字段未编入索引。我应该将先前行中该字段的值设置为空(出于节省内存的原因)吗?