为了运行大量与数据库交互的testing,我想做两件事情:
我想复制数据库的架构而不复制其数据。 我可以用一个脚本来抓取数据库中每个表的CREATE TABLE语句。
在创build这个数据库时,我想强制它在内存中是100%。
我被困在如何做第2部分 – 是否有一个更简单的方法来做到这一点,而不是指定每个表的引擎? 不知何故,这似乎是一个糟糕的做法。
检测在Java中读取的文件
Postgresql – FATAL:用户“myuser”的身份validation失败
项目使用两个不同版本的sql Server
C中的问题 – 如何擦除数据库结构中的数组
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] 举报,一经查实,本站将立刻删除。