微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

强制整个MySQL数据库在内存中

为了运行大量与数据库交互的testing,我想做两件事情:

我想复制数据库的架构而不复制其数据。 我可以用一个脚本来抓取数据库中每个表的CREATE TABLE语句。

在创build这个数据库时,我想强制它在内存中是100%。

我被困在如何做第2部分 – 是否有一个更简单的方法来做到这一点,而不是指定每个表的引擎? 不知何故,这似乎是一个糟糕的做法。

如何导入多个转储文件到Windows中的MysqL

检测在Java中读取的文件

如何优化大内存数据库分页

Postgresql – FATAL:用户“myuser”的身份validation失败

项目使用两个不同版本的sql Server

C中的问题 – 如何擦除数据库结构中的数组

PHP连接到sql Server数据库

在unix中运行sqlplus后台

如果数据库最终依赖于操作系统,数据库如何保证持久性?

MysqL – ODBC连接失败,Workbench连接工作

在/dev/shm (ubuntu | debian)中创建数据库,它将在RAM中。 它可以增长到0.5的可用内存。

正如dtmilano所说,你可以把它放在一个tmpfs挂载的文件系统上。 它不一定是/ dev / shm,但这是tmpfs通常安装的地方。

你可以在任何地方创建一个新的:

mount none -t tmpfs /path/to/dir

如果它填满所有可用的RAM,它将使用交换作为备份。

把它放在/ etc / fstab在启动时重新挂载。 只要记住,这是一个RAM磁盘,所以每次重新启动时它都是空的。 请参阅: http : //www.howtoforge.com/storing-files-directories-in-memory-with-tmpfs

或者,如yuxhuang所建议的,您可以创建一个MEMORY类型的表。 它也清空重新启动,虽然表定义依然存在。 但是, MEMORY表类型有一些限制。 例如,它使用固定大小的行,所以不允许使用text和blob列, varchar也不是可变长度。 请参阅: http : //dev.MysqL.com/doc/refman/5.0/en/memory-storage-engine.html

SET storage_engine=MEMORY;

这将设置当前会话的认存储引擎。

如果您使用的是Windows,那么可以在数据库创建脚本中创建添加MEMORY参数的表,如下所示:

CREATE TABLE IF NOT EXISTS `user` ( `id` varchar(23) NOT NULL,`username` varchar(250) NOT NULL,... ) ENGINE=MEMORY DEFAULT CHARSET=utf8;

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐