MySQL 交互模式和非交互模式

这两个词基本是通过wait_time和interactive_timeout这两个变量引出的。

交互式操作:在本机上打开mysql的客户端,就是那个黑窗口,在黑窗口下进行各种sql操作,当然走的肯定是tcp协议。
非交互式操作:在你的项目中进行程序调用。比如一边是tomcat web服务器,一边是数据库服务器,两者怎么通信?在java web里,我们通常会选择hibernate或者是jdbc来连接。那么这时候就是非交互式操作。

MySQL5手册中对两个变量有如下的说明:
interactive_timeout:服务器关闭交互式连接前等待活动的秒数。交互式客户端定义为在mysql_real_connect()中使用CLIENT_INTERACTIVE选项的客户端。又见wait_timeout 。
wait_timeout:服务器关闭非交互连接之前等待活动的秒数。在线程启动时,根据全局wait_timeout值或全局interactive_timeout值初始化会话wait_timeout值,取决于客户端类型(由mysql_real_connect()的连接选项CLIENT_INTERACTIVE定义),又见interactive_timeout。

mysql生成随机字符串

set global log_bin_trust_function_creators = 1; 
DROP FUNCTION IF EXISTS rand_string;
DELIMITER $$
CREATE FUNCTION rand_string(n INT)
RETURNS VARCHAR(255)
BEGIN
    DECLARE chars_str varchar(100) DEFAULT 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789';
    DECLARE return_str varchar(255) DEFAULT '';
    DECLARE i INT DEFAULT 0;
    WHILE i < n DO
        SET return_str = concat(return_str,substring(chars_str , FLOOR(1 + RAND()*62 ),1));
        SET i = i +1;
    END WHILE;
    RETURN return_str;
END $$
DELIMITER ;
select rand_string(32);

经测试,函数创建后与当前数据库绑定,下面语句可以查看函数相关信息。

SHOW FUNCTION STATUS WHERE Db='database_name';

 

MongoDb 导出查询结果

dump.js

var c = db.user.find({nick_name:{$exists:true,$ne:''}}).limit(100);
while(c.hasNext()) {
    printjson(c.next());
}

mongo 192.168.2.201:41211/dc_user dump.js > feed.json

dc_user库的user表的指定数据会以json形式保存在feed.json中。

注意:printjson输出的是格式化的json文本,便于查看数据,但是不能用mongoimport导入,如果需要导入替换printjson为printjsononeline