Insert時の時など文字列に改行コード(\r\n)等が含まれる場合に
警告が表示されます。
対応としましては
Hintにあるように文字列の前に”E”を付与する
WARNING: nonstandard use of \\ in a string literal HINT: Use the escape string syntax for backslashes, e.g., E'\\'.
Insert時の時など文字列に改行コード(\r\n)等が含まれる場合に
警告が表示されます。
対応としましては
Hintにあるように文字列の前に”E”を付与する
WARNING: nonstandard use of \\ in a string literal HINT: Use the escape string syntax for backslashes, e.g., E'\\'.
PHPにて画像関連を扱うためのライブラリのインストール
GD関連ライブラリのインストール
su - cd /usr/local/src tar xzvf zlib-1.1.4.tar.gz cd zlib-1.1.4 ./configure --shared make su # make install
※zlib などの位置を指定するために、Makefile を編集します。
cd /usr/local/src tar xvzf libpng-1.0.15.tar.gz cd libpng-1.0.15 cp scripts/makefile.linux Makefile vi Makefile -*-*-*-*-*-*-*-*-*-*-*-*-* ZLIBLIB=/usr/local/lib ZLIBINC=/usr/local/include -*-*-*-*-*-*-*-*-*-*-*-*-* make make install <h3>jpeg のインストール</h3> cd /usr/local/src tar xzvf jpegsrc.v6b.tar.gz cd jpeg-6b
次に、configure を実行します。
共有ライブラリもコンパイルしたい場合は、
–enable-shared オプションをつけます。
./configure --enable-shared make make install
-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
!!!エラー発生の場合!!!
※そのようなファイルやディレクトリはありません
make: *** [install] エラー 1
::対処法::
libtoolをコピーし実行権限を付与する(エラーでないよといわれる)
cp /usr/local/src/libtool /usr/local/src/jpeg-6b/. chmod 777 /usr/local/src/jpeg-6b/libtool /usr/local/man/man1 ディレクトリが存在しない場合は /bin/install: cannot create regular file `/usr/local/man/man1/cjpeg.1': No such file or directory のようなエラーが出ると思います.この場合は ::対処法:: install -d /usr/local/man/man1
-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
install -d /usr/local/man/man1 もう一回 make install
gd のインストール
最後に、gd ライブラリのコンパイルです。
まず、ソースを展開し、展開したディレクトリに移動します。
cd /usr/local/src tar xzvf gd-1.8.4.tar.gz cd gd-1.8.4
以下の//部は実行していません
//TTF、Xpm、FreeType などのライブラリを持っていて、
それらの機能を組み込みたい場合は、Makefile を変更してください。
また、コンパイルオプションを変更したい場合も、
直接 Makefile を変更する必要があります。
//CFLAGS=-O2 -DHAVE_LIBPNG -DHAVE_LIBJPEG -DHAVE_XPM -DHAVE_LIBTTF
//LIBS=-lgd -lpng -lz -lm -ljpeg -lXpm -lX11 -lttf
//変更が終わったら、make します。
//> make
root ユーザになってインストールを行います。
make make install
あとはPHPインストール時に
configureのオプション指定を行えばOKです。
チューニング(多少の..)
ipcs -lm ------ シェアードメモリの制限 -------- max number of segments = 4096 max seg size (kbytes) = 4194303 max total shared memory (kbytes) = 1073741824 min seg size (bytes) = 1 echo $((4194303 / 1024))=4095 echo $((1073741824 / 1024 / 1024)) = 1024:1G
チューニング(多少の…) (実メモリ1G)
su postgres vi /var/pgsql/data/postgresql.conf 同時接続数 max_connections = 50 共有バッファを増やす(物理メモリの 1/4~1/2) #shared_buffers = 32MB # min 128kB or max_connections*16kB ↓ shared_buffers = 512MB (物理メモリの1/4~1/2(DBが主な仕事の場合)) #参考値 #1000ページ(8MB) #2000ページ(16MB) #4000ページ(32MB) #8000ページ(64MB) #16000ページ(128MB) #32000ページ(256MB) #64000ページ(512MB) #128000ページ(1024MB)(1G) #256000ページ(2048MB)(2G) #512000ページ(4096MB)(4G) #1024000ページ(8012MB)(8G) ●テンプバッファの調整 #temp_buffers = 8MB # min 800kB ↓ temp_buffers = 16MB # min 800kB ●ソートメモリ #work_mem = 1MB # min 64kB ↓ work_mem = 8MB # min 64kB ●トランザクションログバッファの調整 wal_buffers = 64kB # min 32kB ↓ wal_buffers = 256kB
postgreSQlの再起動
pg_ctl restart
PostgreSQLの再起動時に
This error usually means that PostgreSQL’s request for
a shared memory segment exceeded your kernel’s SHMMAX
parameter.云々
といわれる時は
/proc/sys/kernel/shmmax の値を増やします
#echo 130023424 > /proc/sys/kernel/shmmax 等
postgres-dblinkでは
接続中のPostgreSQLで他のPostgreSQLデータベースのデータにアクセスする為のライブラリ
contribで提供されているdblinkを利用します
postgres-dblinkインストール
postgresのsrcディレクトリ内のcontrib/dblinkへ移動
su postgres
make
make install
$ psql -U postgres -d {DBNAME} < dblink.sql
※{DBNAME}はdblinkを利用したいデータベース名。
これをtemplate1とすることで今後作成するデータベースで利用できるようになる。
● 使用方法
“[" と "]” で括られている接続識別名は省略可能です。
ただし接続識別名を接続時に指定した場合は常に必要です。※ “[" および "]” は記述不要。
* アクセスしたいテーブルなどがあるデータベースに接続
select dblink_connect(['{接続識別名}', ]‘{接続文字列}’);
※ {接続文字列}にはlibpqのPQconnectdb関数で利用するキーワードを記述します。
参照.) PostgreSQLマニュアル – libpq – Cライブラリ – データベース接続制御関数
ex.)
select dblink_connect(’conn1′,
‘host=dbsv port=5432 dbname=mydb user=scott password=tiger’);
* 検索(SELECT)
select *
from dblink(['{接続識別名}', ]
’select {列名}[, {列名}...]
from {オブジェクト名}’)
t1({列名} {データ型}[, {列名} {データ型}...]);
ex.)
select *
from dblink(’conn1′,
’select oid, relname
from pg_class’)
t1(oid oid, relname text);
* 更新(UPDATE/INSERT/DELETE)
select dblink_exec(['{接続識別名}', ]{DML文}[, fail_on_error]);
ex.)
select dblink_exec(’conn1′,
‘delete from emp where empno=7800′);
* データベースから切断
select dblink_disconnect(['{接続識別名}']); ex.)
select dblink_disconnect(’conn1′);
接続
select dblink_connect('conn1','host=XXXXX port=5432 dbname=replication user=XXX password=XXXX');
切断
select dblink_disconnect('conn1');
検索
select dblink_connect('conn1','host=データベース1 port=5432 dbname=replication user=XXX password=XXX');
select * from dblink('conn1','select a from rep') t1(a integer);
select * from dblink('conn1','select count(*) as cnt from rep') t1(cnt integer);
select dblink_disconnect('conn1');
select dblink_exec('conn1','delete from emp where empno=7800');
select dblink_connect('conn1','host=データベース1 port=5432 dbname=replication user=XXX password=XXX');
select dblink_connect('conn2','host=データベース2 port=5432 dbname=replication user=XXX password=XXX');
select *
from
dblink('conn1','select count(*) as cnt from rep') t1(cnt integer),
dblink('conn2','select count(*) as cnt from rep') t2(cnt integer)
;
おー素晴らしいー
異なるデータベースをひとつのSQL文で取得できちゃいました。
cnt | cnt -----+----- 10 | 10 (1 row)
select dblink_disconnect(’conn1′);
pgbenchにてpostgreSQLの
ベンチマークを測定する事ができます
言うまでもありませんがポスグレをインストールしたサーバで行います。
su postgres cd /usr/local/src/postgresql-8.3.4/contrib/pgbench make make install
ベンチマーク用データベースを作成し、初期化
createdb pgbench pgbench -i pgbench
tps(trunsaction per second)値が高いほど良い
デフォルトはクライアント数1、トランザクション数10で
SELECT,INSERT,UPDATEが実行される
tpsは1秒間に処理可能なトランザクション数で
数字が大きいほど性能が良いということ
2行の違いは接続の確立に要した時間を含むか含まないか
SELECTのみをクライアント数10、トランザクション数100とする場合は
$ pgbench -S -c 10 -t 100 pgbench