问题标签 [storage-engines]

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.

0 投票
1 回答
120 浏览

mysql - phpmyadmin 中使用的默认存储引擎是什么,如果我更改默认存储引擎,我的数据库或表会受到影响吗?

phpmyadmin用于管理数据库。我想知道使用的默认存储引擎是什么。如果我更改默认存储引擎,它会影响我的表吗?如果我想更改数据库存储引擎,我需要注意什么?

0 投票
0 回答
27 浏览

database - 关于 Bitcask 如何进行崩溃恢复的问题?

我目前正在阅读 Martin Kleppman 的 Designing Data-Intensive Applications。

在书中,他提出了 Bitcask 存储引擎作为如何进行哈希索引的示例。

他说这是关于崩溃恢复...

如果数据库重新启动,内存中的哈希映射将丢失。原则上,您可以通过从头到尾读取整个段文件并记录每个键的最新值的偏移量来恢复每个段的哈希映射。但是,如果段文件很大,这可能需要很长时间,这会使服务器重新启动很痛苦。Bitcask 通过在磁盘上存储每个段的哈希映射的快照来加速恢复,可以更快地将其加载到内存中。

如果发生崩溃,Bitcask 如何处理过期的快照(在拍摄快照后添加新密钥)?

每次添加/更新新的键/值对时, Bitcask 都会拍摄快照吗?

或者 Bitcask 是否会在请求不在内存哈希表中的密钥时对段文件进行 O(n) 搜索(因为可能发生了崩溃并且在拍摄快照后添加了密钥) ?

我正在尝试查看 Bitcask 的源代码,但我很难理解它,因为我不了解 Erlang。

谢谢!

0 投票
0 回答
23 浏览

mysql - 如何在不使用任何mysql查询的情况下在java中获取mysql存储引擎类型

我正在使用 JDBC API。我使用 JDBC 模板创建了数据库连接。我正在尝试检查连接数据库中给定表的存储引擎类型。我的目的是检查引擎类型是否为 NDB。

这可以使用以下 MySQL 查询来完成: SELECT ENGINE FROM information_schema.TABLES WHERE TABLE_SCHEMA = ? AND TABLE_NAME = ?

但是,我需要找到一种不使用查询的方法来执行此操作,因为在某些情况下,由于访问权限限制(例如,访问时),此 Select-query 将不起作用information_schema

有没有其他方法可以实现这个目标?(通过使用 JDBC 驱动程序/JDBC 池属性/任何其他方式..)

这是我使用的代码块:

0 投票
1 回答
16 浏览

metadata - InnoDB 何时以及如何访问其元数据或索引?

关于元数据或索引的作用,关于读取路径或写入路径的信息很少。我的意思是我无法真正理解 InnoDB 如何管理其元数据,以及何时访问它以执行查询。

您能否命名一些关键字或提供可以说明这一点的文档?

非常感谢!

0 投票
1 回答
66 浏览

mysql - 为什么 MySQL InnoDB 重做日志块写入不需要双写?

MySQL InnoDB 重做日志块大小为 512 字节(可能是磁盘中的一个扇区)。我读了磁盘扇区写入原子吗?. 看起来它取决于底层硬件来决定扇区写入是否是原子的。那么如果它不是原子的,InnoDB 重做日志如何保证它不会被破坏呢?

假设磁盘中最后一个日志块未满,那么 InnoDB 引擎会向该块写入更多日志记录并将其刷新到磁盘。突然断电导致只有部分块已写入磁盘。由于该块的校验和不匹配。服务器重新启动后,其他先前提交的事务将丢失。