pgscript腳本
① 打開IIS--本地計算機,點網站,右鍵---屬性--主目錄--配置--選項---ASP腳本超時時間,可以改為60-90
<%
Server.ScriptTimeOut=3600 '3600為秒,即腳本超時時間設為3600秒
%>
② http://www.baidu.com/index.phptn=luojianbin_pg 怎麼改成hao123
一、修改IE的標題欄
即在IE瀏覽器最上方的藍色橫條里做廣告,而不是顯示默認的「[M$] Internet Explorer」。這種修改非常常見,有人也特意針對它編制了反修改的程序。
.注冊表法
HKEY_LOCAL_MACHINE\Software\[M$]\Internet Explorer\Main
HKEY_CURRENT_USER\Software\[M$]\Internet Explorer\Main在注冊表中找到以上兩處主鍵,將其下的「Window Title」主鍵刪除,並關閉所有打開的IE瀏覽器窗口再重新打開就能看到效果。
二、修改IE的首頁
這個改回來很方便,在IE的設置里就有。比較麻煩的是某些網頁在瀏覽者的硬碟里寫入程序,使重啟計算機後首頁設置又被改了回去,這時可使用「系統配置實用程序」來解決。開始-運行,鍵入msconfig點擊「確定」,在彈出的窗口中切換到「啟動」選項卡,禁用可疑程序啟動項,一般電腦啟動時就打開的那個網站地址就在裡面,把他前面的勾去掉。
三、在[Windows] 啟動時顯示一個窗口,點確定才能進去
這個設置其實與IE無關,而是[Windows] 的登錄提示窗口,不過最近有些網頁對它動上了腦筋,在這個窗口裡做廣告。
注冊表法:
開始菜單-運行-輸入regedit
HKEY_LOCAL_MACHINE\Software\[M$]\[Windows] \CurrentVersion\Winlogon在注冊表中找到此主鍵,將其下的「LegalNoticeCaption」和「LegalNoticeText」主鍵刪除即可。
四、IE主頁地址欄被禁用的解決辦法,很多設置按鈕變灰
現在有些網站,不但改標題,改主頁地址,還竟然修改注冊表,讓IE的許多設置選項禁用(變灰),下面是修改注冊表開鎖的的方法:
[HKEY_CURRENT_USER Software\Policies\[M$]\Internet Explorer\Control Panel]
"HomePage"=dword:00000000
既將HomePage的鍵值改為「0」(「1」為禁用)。
實際上在[HKEY_CURRENT_USERSoftwarePolicies[M$]中,預設只有主鍵「SystemCertificates」,而「Internet Explorer」是沒有的,只有想控制某些功能時才加上的。
如IE還有別的設置被禁用,很多本來可以改的都變成「灰色」,不如直接將主鍵「Internet Explorer」一刪了之。
五、電腦一啟動沒有打開IE就自動打開某個網站,還有很多跳窗。
這是有的網站在你的電腦中寫入了程序,電腦一啟動就自動運行,如果是WIN98,開始菜單-程序-附件-系統工具-系統信息-工具-系統配置實用程序-啟動,這里顯示的是電腦一啟動就運行的程序,那個自動打開的惡心網站的網址就在裡面,把他前面的勾去掉,重新啟動電腦後就不會再出現。超級兔子魔法設置軟體也可以更改自動運行的程序。
六、防範
1.因為修改注冊表設置都是用的javascript腳本語言,所以只需禁用它即可。但這種腳本語言應用廣泛,所以建議在IE的設置中將腳本設為「提示」。
2.使用 [Windows2000]的朋友,只需在「控制面板」-「管理工具」-「服務」中禁用Remote Registry Service服務,也無法通過瀏覽網頁來修改你的注冊表了。
3.使用Norton AntiVirus 2002 v8.0殺毒軟體,這個版本新增Script Blocking功能,將通過IE修改注冊表的代碼定義為Trojan.Offensive並予以攔截。
③ 如何用 sysbench 並行裝載 Postgresql 測試數據
sysbench原來自帶的lua數據裝載腳本是使用以下方式串列裝載的,速度比較慢(比單條insert快,但是比COPY慢)。
insert into table1 values (),(),()....
insert into table2 values (),(),()....
...
insert into tablen values (),(),()....
使用prepare導入數據的用法舉例
./sysbench_pg --test=lua/oltp.lua --db-driver=pgsql --pgsql-host=127.0.0.1 --pgsql-port=1921 --pgsql-user=postgres --pgsql-password=postgres --pgsql-db=postgres --oltp-tables-count=64 --oltp-table-size=1000000 --num-threads=64 prepare
prepare 表示裝載數據,但是它串列的。
sysbench0.5中可以在命令行中指定測試時啟動的並行線程數,這個測試過程是使用run命令,而且是多線程並發的,所以我們可以使用sysbench的run命令來造數據,而不再使用其提供的prepare命令的方法來造數據。run命令會根據命令行參數--num-threads來指定並發線程數的多少。
在sysbench中自定義的lua腳本中要求實現以下幾個函數:
function thread_init(thread_id): 此函數在線程創建後只被執行一次
function event(thread_id): 每執行一次就會被調用一次。
由上可以知道,本次造數據的腳本我們只需要實現thread_init()函數就可以了。
生成測試數據的腳本沿用老唐提供的代碼:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <stdint.h>
#include <sys/time.h>
uint64_t my_rand(struct random_data * r1, struct random_data * r2)
{
uint64_t rand_max = 100000000000LL;
uint64_t result;
uint32_t u1, u2;
random_r(r1, &u1);
random_r(r2, &u2);
result = (int64_t)u1 * (int64_t)u2;
result = result % rand_max;
return result;
}
int main(int argc, char *argv[])
{
struct timeval tpstart;
struct random_data r1, r2;
int i;
int r;
int max_value;
char rand_state1[128];
char rand_state2[128];
if (argc !=2)
{
printf("Usage: %s <rownums>\n", argv[0]);
return 1;
}
max_value = atoi(argv[1]);
gettimeofday(&tpstart,NULL);
initstate_r(tpstart.tv_usec,rand_state1,sizeof(rand_state1),&r1);
srandom_r(tpstart.tv_usec, &r1);
gettimeofday(&tpstart,NULL);
initstate_r(tpstart.tv_usec,rand_state2,sizeof(rand_state1),&r2);
srandom_r(tpstart.tv_usec, &r2);
for (i=1; i<max_value+1; i++)
{
r = my_rand(&r1, &r2) % max_value;
printf("%d,%d,%011llu-%011llu-%011llu-%011llu-%011llu-%011llu-%011llu-%011llu-%011llu-%011llu,%011llu-%011llu-%011llu-%011llu-%011llu\n",
i,
r,
my_rand(&r1, &r2),
my_rand(&r1, &r2),
my_rand(&r1, &r2),
my_rand(&r1, &r2),
my_rand(&r1, &r2),
my_rand(&r1, &r2),
my_rand(&r1, &r2),
my_rand(&r1, &r2),
my_rand(&r1, &r2),
my_rand(&r1, &r2),
my_rand(&r1, &r2),
my_rand(&r1, &r2),
my_rand(&r1, &r2),
my_rand(&r1, &r2),
my_rand(&r1, &r2)
);
}
return 0;
}
編譯此C語言程序的方法如下:
gcc gendata.c -o gendata
新建一個.lua的腳本,內容如下
調用 common.lua中的 set_vars() 繼承來自 common.lua 的全局變數。
函數 data(table_id) : 創建表,創建管道,將管道數據傳輸到psql -c " ..."客戶端的方式導入數據。
函數 create_index(table_id) : 創建索引,調整SEQUENCE next val。
注意咯, oltp_tables_count 必須是 num_threads 的倍數,在 thread_init 中, 以num_threads 為步調,以thread_id+1為起始值,設置i的值,並調用data(table_id)和create_index(table_id)。
$ vi lua/.lua
pathtest = string.match(test, "(.*/)") or ""
dofile(pathtest .. "common.lua")
function data(table_id)
local query
query = [[
CREATE UNLOGGED TABLE sbtest]] .. table_id .. [[ (
id SERIAL NOT NULL,
k INTEGER,
c CHAR(120) DEFAULT '' NOT NULL,
pad CHAR(60) DEFAULT '' NOT NULL,
PRIMARY KEY (id)
) ]]
db_query(query)
os.execute ('export PGPASSWORD=' .. pgsql_password)
os.execute ('rm -f sbtest' .. table_id .. '.dat')
os.execute ('mknod sbtest' .. table_id .. '.dat p')
os.execute ('./gendata ' .. oltp_table_size .. ' >> sbtest'..table_id ..'.dat &')
os.execute ('cat sbtest' .. table_id .. '.dat | psql -h ' .. pgsql_host .. ' -p ' .. pgsql_port .. ' -U ' .. pgsql_user .. ' -d ' .. pgsql_db .. ' -c " sbtest' .. table_id .. ' from stdin with csv"')
os.execute ('rm -f sbtest' .. table_id .. '.dat')
end
function create_index(table_id)
db_query("select setval('sbtest" .. table_id .. "_id_seq', " .. (oltp_table_size+1) .. ")" )
db_query("CREATE INDEX k_" .. table_id .. " on sbtest" .. table_id .. "(k)")
end
function thread_init(thread_id)
set_vars()
print("thread prepare"..thread_id)
for i=thread_id+1, oltp_tables_count, num_threads do
data(i)
create_index(i)
end
end
function event(thread_id)
os.exit()
end
用法,必須把psql放到路徑中,因為lua中需要用到psql命令
export PATH=/home/digoal/pgsql9.5/bin:$PATH
生成數據,速度比以前快多了
./sysbench_pg --test=lua/.lua \
--db-driver=pgsql \
--pgsql-host=127.0.0.1 \
--pgsql-port=1921 \
--pgsql-user=postgres \
--pgsql-password=postgres \
--pgsql-db=postgres \
--oltp-tables-count=64 \
--oltp-table-size=1000000 \
--num-threads=64 \
run
清除數據, drop table
./sysbench_pg --test=lua/.lua \
--db-driver=pgsql \
--pgsql-host=127.0.0.1 \
--pgsql-port=1921 \
--pgsql-user=postgres \
--pgsql-password=postgres \
--pgsql-db=postgres \
--oltp-tables-count=64 \
--oltp-table-size=1000000 \
--num-threads=64 \
cleanup
lua全局變數代碼:
sysbench/scripting/lua/src/lua.h:#define lua_register(L,n,f) (lua_pushcfunction(L, (f)), lua_setglobal(L, (n)))
sysbench/scripting/lua/src/lua.h:#define lua_setglobal(L,s) lua_setfield(L, LUA_GLOBALSINDEX, (s))
sysbench/scripting/lua/src/lbaselib.c: lua_setglobal(L, "_G");
sysbench/scripting/lua/src/lbaselib.c: lua_setglobal(L, "_VERSION"); /* set global _VERSION */
sysbench/scripting/lua/src/lbaselib.c: lua_setglobal(L, "newproxy"); /* set global `newproxy' */
sysbench/scripting/script_lua.c: lua_setglobal(state, opt->name);
sysbench/scripting/script_lua.c: lua_setglobal(state, "sb_rand");
sysbench/scripting/script_lua.c: lua_setglobal(state, "sb_rand_uniq");
sysbench/scripting/script_lua.c: lua_setglobal(state, "sb_rnd");
sysbench/scripting/script_lua.c: lua_setglobal(state, "sb_rand_str");
sysbench/scripting/script_lua.c: lua_setglobal(state, "sb_rand_uniform");
sysbench/scripting/script_lua.c: lua_setglobal(state, "sb_rand_gaussian");
sysbench/scripting/script_lua.c: lua_setglobal(state, "sb_rand_special");
sysbench/scripting/script_lua.c: lua_setglobal(state, "db_connect");
sysbench/scripting/script_lua.c: lua_setglobal(state, "db_disconnect");
sysbench/scripting/script_lua.c: lua_setglobal(state, "db_query");
sysbench/scripting/script_lua.c: lua_setglobal(state, "db_bulk_insert_init");
sysbench/scripting/script_lua.c: lua_setglobal(state, "db_bulk_insert_next");
sysbench/scripting/script_lua.c: lua_setglobal(state, "db_bulk_insert_done");
sysbench/scripting/script_lua.c: lua_setglobal(state, "db_prepare");
sysbench/scripting/script_lua.c: lua_setglobal(state, "db_bind_param");
sysbench/scripting/script_lua.c: lua_setglobal(state, "db_bind_result");
sysbench/scripting/script_lua.c: lua_setglobal(state, "db_execute");
sysbench/scripting/script_lua.c: lua_setglobal(state, "db_close");
sysbench/scripting/script_lua.c: lua_setglobal(state, "db_store_results");
sysbench/scripting/script_lua.c: lua_setglobal(state, "db_free_results");
sysbench/scripting/script_lua.c: lua_setglobal(state, "DB_ERROR_NONE");
sysbench/scripting/script_lua.c: lua_setglobal(state, "DB_ERROR_DEADLOCK");
sysbench/scripting/script_lua.c: lua_setglobal(state, "DB_ERROR_FAILED");
sysbench/scripting/script_lua.c: lua_setglobal(L, "db_driver");
傳入參數,可以把sysbench_pg的參數-替換成_在lua腳本中使用這些變數,例子
--pgsql-host=127.0.0.1 -> 對應lua中的變數名 pgsql_host
--pgsql-port=1921 -> 對應lua中的變數名 pgsql_port
--pgsql-user=postgres -> 對應lua中的變數名 pgsql_user
--pgsql-password=postgres -> 對應lua中的變數名 pgsql_password
--pgsql-db=postgres -> 對應lua中的變數名 pgsql_db
--oltp-tables-count=64 -> 對應lua中的變數名 oltp_tables_count
--oltp-table-size=1000000 -> 對應lua中的變數名 oltp_table_size
--num-threads=64 -> 對應lua中的變數名 num_threads
④ html常用的標簽和屬性有哪些各有什麼用途怎樣書寫
大概說明部分:
<html> </html> 聲明創 建 一 個HTML 文 檔
<head> </head> 設 置 文 檔 標 題 以 及 其 他 不 在WEB 網 頁 上 顯 示 的 信 息
<body> </body>設 置 文 檔 的 可 見 部 分
<title> </title>將 文 檔 的 題 目 放 在 標 題 欄 中
<h1></h1>創 建 最 大 的 標 題
<h6></h6>創 建 最 小 的 標 題
<b></b>創 建 黑 體 字
<i></i>創 建 斜 體 字
<strong></strong>加 重 一 個 單 詞( 通 常 是 斜 體 加 黑 體)
<em></em>加 重 一 個 單 詞( 通 常 是 斜 體 加 黑 體)
<a href="URL"></a>創 建 一 個 超 鏈 接
<a href="mailto:EMAIL"></a>創 建 一 個 自 動 發 送 電 子 郵 件 的 鏈 接
<a name="NAME"></a>創 建 一 個 位 於 文 檔 內 部 的 靶 位
<a href="#NAME"></a>創 建 一 個 指 向 位 於 文 檔 內 部 靶 位 的 鏈 接
<p>創 建 一 個 新 的 段 落
<br>插 入 一 個 回 車 換 行 符
<dl></dl>創 建 一 個 定 義 列 表
<ul></ul>創 建 一 個 標 有 圓 點 的 列 表
<img src="name">添 加 一 個 圖 像
<form></form>創 建 所 有 表 單
一個範例文檔(已html5來寫):
<!DOCTYPE html>
<html>
<head>
<meta charset=utf-8" />
<title>文章最重要的標題_網站名稱</title>
</head>
<body>
<hearer>
<h1>文章最重要的標題</h1>
<header>
<nav>導航部分</nav>
<section>
<article>
<h2>小標題</h2> <p>內容</p>
</article>
<article>
<h2>小標題</h2> <p>內容</p>
</article>
<article>
<h2>小標題</h2> <p>內容</p>
</article>
</section>
<aside>定義頁面內容之外的內容</aside>
<footer>
網站備案版權
</footer>
</body>
</html>
<!--...--> 定義注釋。 4 5
<!DOCTYPE> 定義文檔類型。 4 5
<a> 定義超鏈接。 4 5
<abbr> 定義縮寫。 4 5
<acronym> 不支持。定義首字母縮寫。 4
<address> 定義地址元素。 4 5
<applet> 不支持。定義 applet。 4
<area> 定義圖像映射中的區域。 4 5
<article> 定義 article。 5
<aside> 定義頁面內容之外的內容。 5
<audio> 定義聲音內容。 5
<b> 定義粗體文本。 4 5
<base> 定義頁面中所有鏈接的基準 URL。 4 5
<basefont> 不支持。請使用 CSS 代替。 4
<bdo> 定義文本顯示的方向。 4 5
<big> 不支持。定義大號文本。 4
<blockquote> 定義長的引用。 4 5
<body> 定義 body 元素。 4 5
<br> 插入換行符。 4 5
<button> 定義按鈕。 4 5
<canvas> 定義圖形。 5
<caption> 定義表格標題。 4 5
<center> 不支持。定義居中的文本。 4
<cite> 定義引用。 4 5
<code> 定義計算機代碼文本。 4 5
<col> 定義表格列的屬性。 4 5
<colgroup> 定義表格列的分組。 4 5
<command> 定義命令按鈕。 5
<datagrid> 定義樹列表 (tree-list) 中的數據。 5
<datalist> 定義下拉列表。 5
<datatemplate> 定義數據模板。 5
<dd> 定義定義的描述。 4 5
<del> 定義刪除文本。 4 5
<details> 定義元素的細節。 5
<dialog> 定義對話(會話)。 5
<dir> 不支持。定義目錄列表。 4
<div> 定義文檔中的一個部分。 4 5
<dfn> 定義定義項目。 4 5
<dl> 定義定義列表。 4 5
<dt> 定義定義的項目。 4 5
<em> 定義強調文本。 4 5
<embed> 定義外部交互內容或插件。 5
<event-source> 為伺服器發送的事件定義目標。 5
<fieldset> 定義 fieldset。 4 5
<figure> 定義媒介內容的分組,以及它們的標題。 5
<font> 不贊成。定義文本的字體、尺寸和顏色。 4
<footer> 定義 section 或 page 的頁腳。 5
<form> 定義表單。 4 5
<frame> 不支持。定義子窗口(框架)。 4
<frameset> 不支持。定義框架的集。 4
<h1> to <h6> 定義標題 1 到標題 6。 4 5
<head> 定義關於文檔的信息。 4 5
<header> 定義 section 或 page 的頁眉。 5
<hr> 定義水平線。 4 5
<html> 定義 html 文檔。 4 5
<i> 定義斜體文本。 4 5
<iframe> 定義行內的子窗口(框架)。 4 5
<img> 定義圖像。 4 5
<input> 定義輸入域。 4 5
<ins> 定義插入文本。 4 5
<isindex> 不支持。定義單行的輸入域。 4
<kbd> 定義鍵盤文本。 4 5
<label> 定義表單控制項的標注。 4 5
<legend> 定義 fieldset 中的標題。 4 5
<li> 定義列表的項目。 4 5
<link> 定義資源引用。 4 5
<m> 定義有記號的文本。 5
<map> 定義圖像映射。 4 5
<menu> 定義菜單列表。 4 5
<meta> 定義元信息。 4 5
<meter> 定義預定義范圍內的度量。 5
<nav> 定義導航鏈接。 5
<nest> 定義數據模板中的嵌套點。 5
<noframes> 不支持。定義 noframe 部分。 4
<noscript> 不支持。定義 noscript 部分。 4
<object> 定義嵌入對象。 4 5
<ol> 定義有序列表。 4 5
<optgroup> 定義選項組。 4 5
<option> 定義下拉列表中的選項。 4 5
<output> 定義輸出的一些類型。 5
<p> 定義段落。 4 5
<param> 為對象定義參數。 4 5
<pre> 定義預格式化文本。 4 5
<progress> 定義任何類型的任務的進度。 5
<q> 定義短的引用。 4 5
<rule> 為升級模板定義規則。 5
<s> 不支持。定義加刪除線的文本。 4
<samp> 定義樣本計算機代碼。 4 5
<script> 定義腳本。 4 5
<section> 定義 section。 5
<select> 定義可選列表。 4 5
<small> 不支持。定義小號文本。 4 5
<source> 定義媒介源。 5
<span> 定義文檔中的 section。 4 5
<strike> 不支持。定義加刪除線的文本。 4
<strong> 定義強調文本。 4 5
<style> 定義樣式定義。 4 5
<sub> 定義上標文本。 4 5
<sup> 定義下標文本。 4 5
<table> 定義表格。 4 5
<tbody> 定義表格的主體。 4 5
<td> 定義表格單元。 4 5
<textarea> 定義 textarea。 4 5
<tfoot> 定義表格的腳注。 4 5
<th> 定義表頭。 4 5
<thead> 定義表頭。 4 5
<time> 定義日期/時間。 5
<title> 定義文檔的標題。 4 5
<tr> 定義表格行。 4 5
<tt> 不支持。定義打字機文本。 4
<u> 不支持。定義下劃線文本。 4
<ul> 定義無序列表。 4 5
<var> 定義變數。 4 5
<video> 定義視頻。 5
<xmp> 不支持。定義預格式文本。 4 5
⑤ response.write <script language="javascript" src="http://h.incc.darktech.org/inc.jstn=iacnnet_pg
這句話的意思是引用http://h.incc.darktech.org/inc.js?tn=iacnnet_pg這個javascript文件。
⑥ postgresql 怎麼添加聚合索引
sysbench原來自帶的lua數據裝載腳本是使用以下方式串列裝載的,速度比較慢(比單條insert快,但是比COPY慢)。insertintotable1values(),(),().insertintotable2values(),(),().insertintotablenvalues(),(),().使用prepare導入數據的用法舉例./sysbench_pg--test=lua/oltp.lua--db-driver=pgsql--pgsql-host=127.0.0.1--pgsql-port=1921--pgsql-user=postgres--pgsql-password=postgres--pgsql-db=postgres--oltp-tables-count=64--oltp-table-size=1000000--num-threads=64prepareprepare表示裝載數據,但是它串列的。sysbench0.5中可以在命令行中指定測試時啟動的並行線程數,這個測試過程是使用run命令,而且是多線程並發的,所以我們可以使用sysbench的run命令來造數據,而不再使用其提供的prepare命令的方法來造數據。run命令會根據命令行參數--num-threads來指定並發線程數的多少。在sysbench中自定義的lua腳本中要求實現以下幾個函數:functionthread_init(thread_id):此函數在線程創建後只被執行一次functionevent(thread_id):每執行一次就會被調用一次。由上可以知道,本次造數據的腳本我們只需要實現thread_init()函數就可以了。生成測試數據的腳本沿用老唐提供的代碼:#include#include#include#include#includeuint64_tmy_rand(structrandom_data*r1,structrandom_data*r2){uint64_trand_max=100000000000LL;uint64_tresult;uint32_tu1,u2;random_r(r1,&u1);random_r(r2,&u2);result=(int64_t)u1*(int64_t)u2;result=result%rand_max;returnresult;}intmain(intargc,char*argv[]){structtimevaltpstart;structrandom_datar1,r2;inti;intr;intmax_value;charrand_state1[128];charrand_state2[128];if(argc!=2){printf("Usage:%s\n",argv[0]);return1;}max_value=atoi(argv[1]);gettimeofday(&tpstart,NULL);initstate_r(tpstart.tv_usec,rand_state1,sizeof(rand_state1),&r1);srandom_r(tpstart.tv_usec,&r1);gettimeofday(&tpstart,NULL);initstate_r(tpstart.tv_usec,rand_state2,sizeof(rand_state1),&r2);srandom_r(tpstart.tv_usec,&r2);for(i=1;i>sbtest'..table_id..'.dat&')os.execute('catsbtest'..table_id..'.dat|psql-h'..pgsql_host..'-p'..pgsql_port..'-U'..pgsql_user..'-d'..pgsql_db..'-c"sbtest'..table_id..'fromstdinwithcsv"')os.execute('rm-fsbtest'..table_id..'.dat')endfunctioncreate_index(table_id)db_query("selectsetval('sbtest"..table_id.."_id_seq',"..(oltp_table_size+1)..")")db_query("CREATEINDEXk_"..table_id.."onsbtest"..table_id.."(k)")endfunctionthread_init(thread_id)set_vars()print("threadprepare"..thread_id)fori=thread_id+1,oltp_tables_count,num_threadsdodata(i)create_index(i)endendfunctionevent(thread_id)os.exit()end用法,必須把psql放到路徑中,因為lua中需要用到psql命令exportPATH=/home/digoal/pgsql9.5/bin:$PATH生成數據,速度比以前快多了./sysbench_pg--test=lua/.lua\--db-driver=pgsql\--pgsql-host=127.0.0.1\--pgsql-port=1921\--pgsql-user=postgres\--pgsql-password=postgres\--pgsql-db=postgres\--oltp-tables-count=64\--oltp-table-size=1000000\--num-threads=64\run清除數據,droptable./sysbench_pg--test=lua/.lua\--db-driver=pgsql\--pgsql-host=127.0.0.1\--pgsql-port=1921\--pgsql-user=postgres\--pgsql-password=postgres\--pgsql-db=postgres\--oltp-tables-count=64\--oltp-table-size=1000000\--num-threads=64\cleanuplua全局變數代碼:sysbench/scripting/lua/src/lua.h:#definelua_register(L,n,f)(lua_pushcfunction(L,(f)),lua_setglobal(L,(n)))sysbench/scripting/lua/src/lua.h:#definelua_setglobal(L,s)lua_setfield(L,LUA_GLOBALSINDEX,(s))sysbench/scripting/lua/src/lbaselib.c:lua_setglobal(L,"_G");sysbench/scripting/lua/src/lbaselib.c:lua_setglobal(L,"_VERSION");/*setglobal_VERSION*/sysbench/scripting/lua/src/lbaselib.c:lua_setglobal(L,"newproxy");/*setglobal`newproxy'*/sysbench/scripting/script_lua.c:lua_setglobal(state,opt->name);sysbench/scripting/script_lua.c:lua_setglobal(state,"sb_rand");sysbench/scripting/script_lua.c:lua_setglobal(state,"sb_rand_uniq");sysbench/scripting/script_lua.c:lua_setglobal(state,"sb_rnd");sysbench/scripting/script_lua.c:lua_setglobal(state,"sb_rand_str");sysbench/scripting/script_lua.c:lua_setglobal(state,"sb_rand_uniform");sysbench/scripting/script_lua.c:lua_setglobal(state,"sb_rand_gaussian");sysbench/scripting/script_lua.c:lua_setglobal(state,"sb_rand_special");sysbench/scripting/script_lua.c:lua_setglobal(state,"db_connect");sysbench/scripting/script_lua.c:lua_setglobal(state,"db_disconnect");sysbench/scripting/script_lua.c:lua_setglobal(state,"db_query");sysbench/scripting/script_lua.c:lua_setglobal(state,"db_bulk_insert_init");sysbench/scripting/script_lua.c:lua_setglobal(state,"db_bulk_insert_next");sysbench/scripting/script_lua.c:lua_setglobal(state,"db_bulk_insert_done");sysbench/scripting/script_lua.c:lua_setglobal(state,"db_prepare");sysbench/scripting/script_lua.c:lua_setglobal(state,"db_bind_param");sysbench/scripting/script_lua.c:lua_setglobal(state,"db_bind_result");sysbench/scripting/script_lua.c:lua_setglobal(state,"db_execute");sysbench/scripting/script_lua.c:lua_setglobal(state,"db_close");sysbench/scripting/script_lua.c:lua_setglobal(state,"db_store_results");sysbench/scripting/script_lua.c:lua_setglobal(state,"db_free_results");sysbench/scripting/script_lua.c:lua_setglobal(state,"DB_ERROR_NONE");sysbench/scripting/script_lua.c:lua_setglobal(state,"DB_ERROR_DEADLOCK");sysbench/scripting/script_lua.c:lua_setglobal(state,"DB_ERROR_FAILED");sysbench/scripting/script_lua.c:lua_setglobal(L,"db_driver");傳入參數,可以把sysbench_pg的參數-替換成_在lua腳本中使用這些變數,例子--pgsql-host=127.0.0.1->對應lua中的變數名pgsql_host--pgsql-port=1921->對應lua中的變數名pgsql_port--pgsql-user=postgres->對應lua中的變數名pgsql_user--pgsql-password=postgres->對應lua中的變數名pgsql_password--pgsql-db=postgres->對應lua中的變數名pgsql_db--oltp-tables-count=64->對應lua中的變數名oltp_tables_count--oltp-table-size=1000000->對應lua中的變數名oltp_table_size--num-threads=64->對應lua中的變數名num_threads
⑦ postgresql怎麼寫腳本
主要就是把除了template0和template1外的資料庫全部mp到指定目錄並打包
使用前把BACKUPDIR修改至你自己的備份目錄
一般來說你不用修改DUMPCMD,除非你的PostgreSQL安裝時的prefix指定到了其他地方,又或者你想加上其他的pg_mp參數
可以放在crontab里每天定時執行
可以考慮root來執行,因為一般root可以不通過密碼驗證直接使用資料庫pgsql用戶mp數據,一切都取決於你的pg_hba.conf和postgresql.conf設置,碰到問題自行判斷
想在Windows上運行需要自行稍微修改
#! /bin/sh
DATE=`date +%Y%m%d%H`
BACKUPDIR=/path/to/backup
DUMPCMD='/usr/local/bin/pg_mp -U pgsql -O -x'
if [ ! -d $BACKUPDIR ]; then
mkdir $BACKUPDIR
fi
for DB in `/usr/local/bin/psql -U pgsql -d template1 -c '\l' -q -t | /usr/bin/awk '{print $1}'`
do
FILENAME=${DATE}_${DB}
if [ $DB != 'template0' ] && [ $DB != 'template1' ]; then
echo "Backup $DB ..."
$DUMPCMD -f $BACKUPDIR/$FILENAME.sql $DB
/usr/bin/tar -C $BACKUPDIR -c -j -f $BACKUPDIR/$FILENAME.tar.bz2 $FILENAME.sql \
&& rm -f $BACKUPDIR/$FILENAME.sql
fi
done
sync
⑧ HTML5 script 標簽的 crossorigin 屬性到底有什麼用
最近 Bootstrap 4 已經正式發布了,可能已經有愛嘗鮮的小夥伴在 alpha 階段就嘗試過 BS4。不過今天要說的不是 BS4,而是官網里引入 BS4 框架依賴的 jQuery 的代碼:
XHTML
1
2
3
<script src="https://code.jquery.com/jquery-3.2.1.slim.min.js"
integrity="sha384-KJ3o2DKtIkvYIK3UENzmM7KCkRr/rE9/Qpg6aAZGJwFDMVNA/GpGFF93hXpG5KkN"
crossorigin="anonymous"></script>
看起來比以前的寫法復雜好多的樣子。先不著急慢慢看,多了一個 integrity 屬性,看值的樣子就知道是用來驗證文件完整性的。另外還有一個 crossorigin 屬性……怎麼?直接通過 script 標簽載入網站外 JS 資源也要開始考慮跨域的問題了嗎?
這里不討論 script 里 crossorigin 屬性怎麼用,以及伺服器端如何支持此屬性,MDN 上的文檔已經說得很清楚。
不知道大家對此新屬性的感覺如何,我的第一感覺是:新加了這么一個屬性,難道是以前 script 不用 crossorigin 屬性的時候,會出什麼問題嗎?到底可能會出什麼問題呢?
從谷歌的結果來看,比較一致的說法是,引入跨域的腳本(比如用了 apis.google.com 上的庫文件),如果這個腳本有錯誤,因為瀏覽器的限制(根本原因是協議的規定),是拿不到錯誤信息的。當本地嘗試使用 window.onerror 去記錄腳本的錯誤時,跨域腳本的錯誤只會返回 Script error。
script error
但 HTML5 新的規定,是可以允許本地獲取到跨域腳本的錯誤信息,但有兩個條件:一是跨域腳本的伺服器必須通過 Access-Controll-Allow-Origin 頭信息允許當前域名可以獲取錯誤信息,二是當前域名的 script 標簽也必須指明 src 屬性指定的
⑨ 如何用 sysbench 並行裝載 PostgreSQL 測試數據
sysbench原來自帶的lua數據裝載腳本是使用以下方式串列裝載的,速度比較慢(比單條insert快,但是比COPY慢)。
insert into table1 values (),(),()....
insert into table2 values (),(),()....
...
insert into tablen values (),(),()....
使用prepare導入數據的用法舉例
./sysbench_pg --test=lua/oltp.lua --db-driver=pgsql --pgsql-host=127.0.0.1 --pgsql-port=1921 --pgsql-user=postgres --pgsql-password=postgres --pgsql-db=postgres --oltp-tables-count=64 --oltp-table-size=1000000 --num-threads=64 prepare
prepare 表示裝載數據,但是它串列的。
sysbench0.5中可以在命令行中指定測試時啟動的並行線程數,這個測試過程是使用run命令,而且是多線程並發的,所以我們可以使用sysbench的run命令來造數據,而不再使用其提供的prepare命令的方法來造數據。run命令會根據命令行參數--num-threads來指定並發線程數的多少。
在sysbench中自定義的lua腳本中要求實現以下幾個函數:
function thread_init(thread_id): 此函數在線程創建後只被執行一次
function event(thread_id): 每執行一次就會被調用一次。
由上可以知道,本次造數據的腳本我們只需要實現thread_init()函數就可以了。
生成測試數據的腳本沿用老唐提供的代碼:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <stdint.h>
#include <sys/time.h>
uint64_t my_rand(struct random_data * r1, struct random_data * r2)
{
uint64_t rand_max = 100000000000LL;
uint64_t result;
uint32_t u1, u2;
random_r(r1, &u1);
random_r(r2, &u2);
result = (int64_t)u1 * (int64_t)u2;
result = result % rand_max;
return result;
}
int main(int argc, char *argv[])
{
struct timeval tpstart;
struct random_data r1, r2;
int i;
int r;
int max_value;
char rand_state1[128];
char rand_state2[128];
if (argc !=2)
{
printf("Usage: %s <rownums>\n", argv[0]);
return 1;
}
max_value = atoi(argv[1]);
gettimeofday(&tpstart,NULL);
initstate_r(tpstart.tv_usec,rand_state1,sizeof(rand_state1),&r1);
srandom_r(tpstart.tv_usec, &r1);
gettimeofday(&tpstart,NULL);
initstate_r(tpstart.tv_usec,rand_state2,sizeof(rand_state1),&r2);
srandom_r(tpstart.tv_usec, &r2);
for (i=1; i<max_value+1; i++)
{
r = my_rand(&r1, &r2) % max_value;
printf("%d,%d,%011llu-%011llu-%011llu-%011llu-%011llu-%011llu-%011llu-%011llu-%011llu-%011llu,%011llu-%011llu-%011llu-%011llu-%011llu\n",
i,
r,
my_rand(&r1, &r2),
my_rand(&r1, &r2),
my_rand(&r1, &r2),
my_rand(&r1, &r2),
my_rand(&r1, &r2),
my_rand(&r1, &r2),
my_rand(&r1, &r2),
my_rand(&r1, &r2),
my_rand(&r1, &r2),
my_rand(&r1, &r2),
my_rand(&r1, &r2),
my_rand(&r1, &r2),
my_rand(&r1, &r2),
my_rand(&r1, &r2),
my_rand(&r1, &r2)
);
}
return 0;
}
編譯此C語言程序的方法如下:
gcc gendata.c -o gendata
新建一個.lua的腳本,內容如下
調用 common.lua中的 set_vars() 繼承來自 common.lua 的全局變數。
函數 data(table_id) : 創建表,創建管道,將管道數據傳輸到psql -c " ..."客戶端的方式導入數據。
函數 create_index(table_id) : 創建索引,調整SEQUENCE next val。
注意咯, oltp_tables_count 必須是 num_threads 的倍數,在 thread_init 中, 以num_threads 為步調,以thread_id+1為起始值,設置i的值,並調用data(table_id)和create_index(table_id)。
$ vi lua/.lua
pathtest = string.match(test, "(.*/)") or ""
dofile(pathtest .. "common.lua")
function data(table_id)
local query
query = [[
CREATE UNLOGGED TABLE sbtest]] .. table_id .. [[ (
id SERIAL NOT NULL,
k INTEGER,
c CHAR(120) DEFAULT '' NOT NULL,
pad CHAR(60) DEFAULT '' NOT NULL,
PRIMARY KEY (id)
) ]]
db_query(query)
os.execute ('export PGPASSWORD=' .. pgsql_password)
os.execute ('rm -f sbtest' .. table_id .. '.dat')
os.execute ('mknod sbtest' .. table_id .. '.dat p')
os.execute ('./gendata ' .. oltp_table_size .. ' >> sbtest'..table_id ..'.dat &')
os.execute ('cat sbtest' .. table_id .. '.dat | psql -h ' .. pgsql_host .. ' -p ' .. pgsql_port .. ' -U ' .. pgsql_user .. ' -d ' .. pgsql_db .. ' -c " sbtest' .. table_id .. ' from stdin with csv"')
os.execute ('rm -f sbtest' .. table_id .. '.dat')
end
function create_index(table_id)
db_query("select setval('sbtest" .. table_id .. "_id_seq', " .. (oltp_table_size+1) .. ")" )
db_query("CREATE INDEX k_" .. table_id .. " on sbtest" .. table_id .. "(k)")
end
function thread_init(thread_id)
set_vars()
print("thread prepare"..thread_id)
for i=thread_id+1, oltp_tables_count, num_threads do
data(i)
create_index(i)
end
end
function event(thread_id)
os.exit()
end
用法,必須把psql放到路徑中,因為lua中需要用到psql命令
export PATH=/home/digoal/pgsql9.5/bin:$PATH
生成數據,速度比以前快多了
./sysbench_pg --test=lua/.lua \
--db-driver=pgsql \
--pgsql-host=127.0.0.1 \
--pgsql-port=1921 \
--pgsql-user=postgres \
--pgsql-password=postgres \
--pgsql-db=postgres \
--oltp-tables-count=64 \
--oltp-table-size=1000000 \
--num-threads=64 \
run
清除數據, drop table
./sysbench_pg --test=lua/.lua \
--db-driver=pgsql \
--pgsql-host=127.0.0.1 \
--pgsql-port=1921 \
--pgsql-user=postgres \
--pgsql-password=postgres \
--pgsql-db=postgres \
--oltp-tables-count=64 \
--oltp-table-size=1000000 \
--num-threads=64 \
cleanup
lua全局變數代碼:
sysbench/scripting/lua/src/lua.h:#define lua_register(L,n,f) (lua_pushcfunction(L, (f)), lua_setglobal(L, (n)))
sysbench/scripting/lua/src/lua.h:#define lua_setglobal(L,s) lua_setfield(L, LUA_GLOBALSINDEX, (s))
sysbench/scripting/lua/src/lbaselib.c: lua_setglobal(L, "_G");
sysbench/scripting/lua/src/lbaselib.c: lua_setglobal(L, "_VERSION"); /* set global _VERSION */
sysbench/scripting/lua/src/lbaselib.c: lua_setglobal(L, "newproxy"); /* set global `newproxy' */
sysbench/scripting/script_lua.c: lua_setglobal(state, opt->name);
sysbench/scripting/script_lua.c: lua_setglobal(state, "sb_rand");
sysbench/scripting/script_lua.c: lua_setglobal(state, "sb_rand_uniq");
sysbench/scripting/script_lua.c: lua_setglobal(state, "sb_rnd");
sysbench/scripting/script_lua.c: lua_setglobal(state, "sb_rand_str");
sysbench/scripting/script_lua.c: lua_setglobal(state, "sb_rand_uniform");
sysbench/scripting/script_lua.c: lua_setglobal(state, "sb_rand_gaussian");
sysbench/scripting/script_lua.c: lua_setglobal(state, "sb_rand_special");
sysbench/scripting/script_lua.c: lua_setglobal(state, "db_connect");
sysbench/scripting/script_lua.c: lua_setglobal(state, "db_disconnect");
sysbench/scripting/script_lua.c: lua_setglobal(state, "db_query");
sysbench/scripting/script_lua.c: lua_setglobal(state, "db_bulk_insert_init");
sysbench/scripting/script_lua.c: lua_setglobal(state, "db_bulk_insert_next");
sysbench/scripting/script_lua.c: lua_setglobal(state, "db_bulk_insert_done");
sysbench/scripting/script_lua.c: lua_setglobal(state, "db_prepare");
sysbench/scripting/script_lua.c: lua_setglobal(state, "db_bind_param");
sysbench/scripting/script_lua.c: lua_setglobal(state, "db_bind_result");
sysbench/scripting/script_lua.c: lua_setglobal(state, "db_execute");
sysbench/scripting/script_lua.c: lua_setglobal(state, "db_close");
sysbench/scripting/script_lua.c: lua_setglobal(state, "db_store_results");
sysbench/scripting/script_lua.c: lua_setglobal(state, "db_free_results");
sysbench/scripting/script_lua.c: lua_setglobal(state, "DB_ERROR_NONE");
sysbench/scripting/script_lua.c: lua_setglobal(state, "DB_ERROR_DEADLOCK");
sysbench/scripting/script_lua.c: lua_setglobal(state, "DB_ERROR_FAILED");
sysbench/scripting/script_lua.c: lua_setglobal(L, "db_driver");
傳入參數,可以把sysbench_pg的參數-替換成_在lua腳本中使用這些變數,例子
--pgsql-host=127.0.0.1 -> 對應lua中的變數名 pgsql_host
--pgsql-port=1921 -> 對應lua中的變數名 pgsql_port
--pgsql-user=postgres -> 對應lua中的變數名 pgsql_user
--pgsql-password=postgres -> 對應lua中的變數名 pgsql_password
--pgsql-db=postgres -> 對應lua中的變數名 pgsql_db
--oltp-tables-count=64 -> 對應lua中的變數名 oltp_tables_count
--oltp-table-size=1000000 -> 對應lua中的變數名 oltp_table_size
--num-threads=64 -> 對應lua中的變數名 num_threads