标签: database-recommendation

mysql innodb_buffer_pool_size 应该有多大?

我有一个繁忙的数据库,只有 InnoDB 表,大小约为 5GB。数据库在使用 SSD 磁盘的 Debian 服务器上运行,我设置了最大连接数 = 800,这有时会饱和并使服务器停止运行。平均每秒查询约 2.5K。所以我需要优化内存使用,为最大可能的连接腾出空间。

我已经看到建议 innodb_buffer_pool_size 应该高达总内存的 %80。另一方面,我从调整引物脚本中收到此警告:

Max Memory Ever Allocated : 91.97 G
Configured Max Per-thread Buffers : 72.02 G
Configured Max Global Buffers : 19.86 G
Configured Max Memory Limit : 91.88 G
Physical Memory : 94.58 G
Run Code Online (Sandbox Code Playgroud)

这是我当前的 innodb 变量:

| innodb_adaptive_flushing                          | ON                                                                                                                     |
| innodb_adaptive_hash_index                        | ON                                                                                                                     |
| innodb_additional_mem_pool_size                   | 20971520                                                                                                               |
| innodb_autoextend_increment                       | 8                                                                                                                      |
| innodb_autoinc_lock_mode                          | 1                                                                                                                      |
| innodb_buffer_pool_instances                      | 1 …
Run Code Online (Sandbox Code Playgroud)

mysql innodb database-recommendation

217
推荐指数
5
解决办法
37万
查看次数

数十亿行数据的最佳数据库和表设计

我正在编写一个需要存储和分析大量电气和温度数据的应用程序。

基本上,我需要存储过去几年和未来数万个地点的大量每小时用电量测量值,然后以不太复杂的方式分析数据。

我需要(目前)存储的信息是位置 ID、时间戳(日期和时间)、温度和电力使用情况。

关于需要存储的数据量,这是一个近似值,但大致如下:
20 000 多个位置,每月 720 条记录(每小时测量,每月大约 720 小时),120 个月(10 年前) ) 和未来许多年。简单的计算得出以下结果:

20 000 个位置 x 720 条记录 x 120 个月(10 年前)= 1 728 000 000 条记录

这些是过去的记录,新记录将每月导入,因此每月大约有 20 000 x 720 = 14 400 000 条新记录

总位置也将稳步增长。

对于所有这些数据,需要执行以下操作:

  1. 检索特定日期和时间段的数据:某个位置 ID 在 01.01.2013 和 01.01.2017 之间以及 07:00 和 13:00 之间的所有记录。
  2. 特定日期和时间范围的简单数学运算,例如 MIN、MAX 和 AVG 温度以及特定位置 ID 5 年 07:00 至 13:00 之间的用电量。

数据将每月写入一次,但会被数百名用户(至少)不断读取,因此读取速度更为重要。

我没有使用 NoSQL 数据库的经验,但从我收集到的信息来看,它们是此处使用的最佳解决方案。我已经阅读了最流行的 NoSQL 数据库,但由于它们完全不同,并且还允许非常不同的表架构,我一直无法决定使用什么是最好的数据库。

我的主要选择是 Cassandra 和 MongoDB,但由于我的知识非常有限,而且在大数据和 NoSQL 方面没有实际经验,我不太确定。我还读到 …

nosql database-design database-recommendation

104
推荐指数
5
解决办法
16万
查看次数

NoSQL 和传统的 RDBMS 有什么区别?

NoSQL 和传统的 RDBMS 有什么区别?

在过去的几个月里,NoSQL 经常在技术新闻中被提及。与传统的 RDBMS 相比,它最重要的特征是什么?差异发生在什么级别(物理、逻辑)?

哪里是使用 NoSQL 的最佳场所?为什么?

nosql rdbms database-recommendation

71
推荐指数
5
解决办法
4万
查看次数

关于单线程与多线程数据库性能

H2 是一个单线程数据库,在性能方面享有盛誉。其他数据库是多线程的。

我的问题是:多线程数据库什么时候变得比单线程数据库更有趣?有多少用户?多少个进程?什么是触发器?有人有经验可以分享吗?

概括

  • 通常的瓶颈是磁盘访问
  • SSD 速度很快,但很脆弱(必须执行故障程序)
  • 单线程系统上的一个长查询将阻塞所有其他查询
  • 配置多线程系统可能很棘手
  • 即使在单核系统上,多线程数据库也是有益的

performance database-recommendation

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

为每个客户创建数据库会遇到什么问题?

我从 stackoverflow 播客中记得Fog CreekFogbugz为每个客户使用一个数据库。我认为这意味着 Fogbugz On Demand 服务器拥有数以千计的数据库。

我们刚刚开始开发一个网络应用程序,并有一个类似的问题需要解决(许多客户拥有自己的独立数据)。

使用每个客户的数据库会出现什么问题?我该如何解决它们?

我的初步想法

每个客户数据库的优势

  • 更简单的数据库架构
  • 更简单的备份 - 您可以依次备份每个客户,而不会真正影响其他客户。
  • 可以轻松导出给定的客户数据。
  • 更好的缓存性能 - 写入一个更活跃的表只会影响执行写入的单个客户。
  • 更容易跨硬件扩展。例如,当我们需要从 1 台服务器增加到 2 台服务器时,我们只需将一半的客户转移到新服务器上。

缺点

  • MySQL能应付5000个数据库吗?性能会很差吗?
  • 对架构的更改可能难以复制到所有数据库中。我们真的必须为此制定一个自动化计划,例如对模式进行版本控制,以及一个了解如何将数据库从一个版本转换为另一个版本的脚本。
  • 做我们所有客户共同的事情可能会很尴尬或不可能
  • 与上述类似,但我们想要对所有客户执行的任何分析都可能是不可能的。例如,我们应该如何跟踪所有客户的使用情况?

mysql database-design database-recommendation

55
推荐指数
4
解决办法
4万
查看次数

什么时候是使用 MariaDB 而不是 MySQL 的合适时机,为什么?

我们在这次迁移中赚到了什么,失去了什么?

迁移后我应该期待什么缺点?

真的没有必要在任何情况下更改应用程序吗?

mysql mariadb database-recommendation

38
推荐指数
3
解决办法
6283
查看次数

是否为不同的产品类型创建单独的表?

我正在设计一个数据库,我正在重新考虑我最初的设计决定......

产品类型如下... 型号、零件、替换零件套件和选项。

选项 A(第一个设计):我计划为上述产品类型设置单独的表格。我想说每个表中大约 75% 的字段是相同的。

我将每个产品类型创建为单独的表,因为我需要在它们之间创建关联。例如,一个模型可以有很多选项,一个选项可以有很多模型。一个选项也可以有很多部分,一个部分可以有很多选项……等等……

选项 B:我可以创建一个名为 Product 的表格,而不是单独的表格,其中包含模型、零件、替换零件套件和选项。我可以有一个称为 type 的字段来区分模型、选项等。我认为不利的一面是某些产品类型永远不会使用几个字段(留空)。我猜这就是“非最佳实践”发挥作用的地方。

选项 B 将大大降低数据库设计的复杂性。在提取数据进行查询时,我也不必担心引用一堆表......

database-design database-recommendation

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

即用型数据库模型示例

在哪里可以找到现成的数据库模型?

我不需要包含数据的数据库,而只需要模式(UML 图)。也许类似于此链接中数据模型,但要复杂得多和现实世界。

database-design database-recommendation database-theory

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

有没有工具可以检查我的数据库是否规范化为第三范式?

我最近了解了规范化,并了解在实现新模式时它的重要性。

如何检查我的数据库是否符合 2NF 或 3NF?

手动审查是一个确定的选择,但我正在寻找一种自动化工具。

我不是在寻找点击式工具,更多的是强调可能的优化以使表格符合 3NF。我猜它可能会使用基于良好样本数据和/或列名语义分析的统计数据。

schema normalization database-design database-recommendation

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

哪种 DBMS 适合超快速读取和简单数据结构?

我正在开发一种产品,作为其操作的一部分,必须跟踪大量文件/目录。这个想法是将统计信息存储在数据库中,然后在启动时为每个文件创建监视。更改的文件将排队(在数据库中)以组同步到远程数据库。它们将按优先级顺序同步,数字介于 1-10 之间。

数据库的相关资料:

  • < 100,000 个统计信息条目
  • 启动时读取整个数据库,只需要文件路径
  • 排队的文件将有一个优先级字段(不需要搜索其他任何内容)
  • 插入可能很慢

我发现了几个我认为可以工作的数据库,但我不确定哪个是最好的:

  • Redis - 将文件路径存储为键,将统计数据存储为值;队列将是一个列表
  • MongoDB - 比 Redis 更多的查询选项,但仍然很快

我认为 NoSQL 数据库将是这里的最佳解决方案,因为没有太多的关系逻辑在进行,并且总数据大小不会太大(例如 < 100 mb,接近 < 30 mb)。我确实看过 SQLite,因为它似乎很简单,可以嵌入到可安装的应用程序中。

由于这是面向最终用户的分布式应用程序而不是高负载服务器,因此数据库不必支持许多并发用户。这里的主要优先事项是找到一个模型最有意义的数据库。

那么问题来了,哪个数据库最适合这种情况?

另外,是否还有其他数据库对这样的应用程序更有意义?

database-recommendation

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