我正在开始TDD开发态度,正在为我的django应用程序编写单元测试.我知道固定装置并且知道测试应该执行的方式,但是对于给定的测试,我确实需要在整个数据库上执行它,并且用于10万行数据库的json fixture不是我想要处理的东西此外,这个测试是"只读".
那么问题是如何设置测试套件以在生产数据库上运行?我想这可能就像在某些测试的setUp方法中添加DATABASE_NAME设置一样简单.但是settings.DATABASE_NAME ="prod_db"在运行测试时导致"NameError:全局名称'设置'未定义".此外,http://code.djangoproject.com/ticket/11987中描述了一种风险,您可能会意外删除生产数据库.
那么,如何在生产数据库而不是临时数据库上运行测试套件的单个测试,或者甚至更好的是什么是最佳实践呢?
任何意见提前干杯!
这里有一个问题,如何正确配置mysql(myisam)以便快速执行批量插入(加载数据infile).
有6个Gb文本文件要导入,15个行,16个列(一些int,一些varchar(255),一个varchar(40),一个char(1)一些datetime,一个mediumtext).
相对my.conf设置:
key_buffer = 800M
max_allowed_packet = 160M
thread_cache_size = 80
myisam_sort_buffer_size = 400M
bulk_insert_buffer_size = 400M
delay_key_write = ON
delayed_insert_limit = 10000
Run Code Online (Sandbox Code Playgroud)
有三个索引 - 一个主要(autincrement int),一个唯一int和一个唯一varchar(40).
问题是在执行load data infile命令后,快速导入前3个数据(基于table.myd增加的大小 - 5-8 mb/s),但是超过3020 Mb的uppon限制了导入速度大大减少 - table.myd的大小增加了0.5mb/s.我注意到,导入过程会Key_blocks_unused因为排空到零而减慢.这些是mysql> show status like '%key%';导入开头的输出:
mysql> show status like '%key%';
+------------------------+---------+
| Variable_name | Value |
+------------------------+---------+
| Com_preload_keys | 0 |
| Com_show_keys | 0 |
| Handler_read_key | 0 |
| Key_blocks_not_flushed | 57664 |
| Key_blocks_unused | …Run Code Online (Sandbox Code Playgroud) 我正在使用此连接字符串从java连接到mysql:
jdbc:mysql://localhost:3306/db?noDatetimeStringSync=true&useUnicode=yes&characterEncoding=UTF-8
是否可以在字符串中设置会话变量,以便SET UNIQUE_CHECKS=0;在连接到服务器时执行?显而易见的
jdbc:mysql://localhost:3306/db?noDatetimeStringSync=true&useUnicode=yes&characterEncoding=UTF-8&unique_checks=0
基于这样的事实,它似乎不起作用
"JDBC:MySQL的://本地主机:3306 /分贝noDatetimeStringSync =真了useUnicode =是&的characterEncoding = UTF-8&UNIQUE_CHECKS = blahblah`
不会产生任何错误.
干杯!