OpenResty在nginx上增加动态脚本能力(Lua),主要是解决了nginx修改配置后必须reload的问题。这个耗时以秒计,而OpenResty是动态脚本,耗时就是一次admin api 请求,几毫秒。看官方的文档,一直在强调“同步非阻塞”,既可以充分利用nginx的非阻塞I/O模型,又能享受同步编程的简便性,也就是代码看上去就是同步执行代码,很好理解和开发,但其实执行是非阻塞的效率很高。同步非阻塞的开发体验应该是优于node.js的,只是javascript更流行。事实上nginx也被OpenResty启发,尝试在nginx上增加javascript来实现OpenResty类似的能力,但也没火起来。 参考:OpenResty的现状、趋势、使用及学习方法 参考:从openresty谈到rust
select*from some_table where details::varcharlike'ABC%';
Java中添加转义字符:
Java
StringstrSql="select * from some_table where details\\:\\:varchar like 'ABC%'";
长事务的查询与中断
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
# 查询 SELECT pid, datname AS db, query_start AS start, now() - query_start AS lap, query FROM pg_stat_activity WHERE state <> 'idle' and query not like '%pg_stat_activity%' and (now() - query_start) > interval '10 seconds';
CREATE TABLE measurement ( city_id int not null, logdate date not null, peaktemp int, unitsales int );
CREATE TABLE measurement_y2006m02 ( CHECK ( logdate >= DATE '2006-02-01' AND logdate < DATE '2006-03-01' ) ) INHERITS (measurement);
CREATE INDEX measurement_y2006m02_logdate ON measurement_y2006m02 (logdate);
CREATE OR REPLACE FUNCTION measurement_insert_trigger() RETURNS TRIGGER AS $$ BEGIN IF ( NEW.logdate >= DATE '2006-02-01' AND NEW.logdate < DATE '2006-03-01' ) THEN INSERT INTO measurement_y2006m02 VALUES (NEW.*); ELSIF ( NEW.logdate >= DATE '2006-03-01' AND NEW.logdate < DATE '2006-04-01' ) THEN INSERT INTO measurement_y2006m03 VALUES (NEW.*); ... ELSIF ( NEW.logdate >= DATE '2008-01-01' AND NEW.logdate < DATE '2008-02-01' ) THEN INSERT INTO measurement_y2008m01 VALUES (NEW.*); ELSE RAISE EXCEPTION 'Date out of range. Fix the measurement_insert_trigger() function!'; END IF; RETURN NULL; END; $$ LANGUAGE plpgsql;