(8.0.29)
max_allowed_packet
show variables like 'max_allowed_packet';
デフォルト = 67108864 = 64MB
最大値 = 1073741824 = 1GB
(19c)
https://docs.oracle.com/cd/F19136_01/refrn/database-limits.html#GUID-ED26F826-DB40-433F-9C2C-8C63A46A3BFE
https://docs.oracle.com/cd/F19136_01/sqpug/SQL-Plus-limits.html#GUID-93CA1BD6-888F-40FD-B57F-0B782C96854F
調べた限り上限はない模様。
SQL*Plusにはコマンドラインの長さ5000文字の制限があるので、制限を超えないように改行を入れる必要がある
大きなサイズのSQL文を作成し確認
(サーバ設定: CPU4コア、メモリ8G)
: > a.sql
echo "select 11111111111111111111 from tab1" >> a.sql
echo "where 11111111111111111111 = 11111111111111111111" >> a.sql
for i in `seq 1 500000`; do
echo "and 11111111111111111111 = 11111111111111111111"
done >> a.sql
echo "and 11111111111111111111 = 11111111111111111111;" >> a.sql
du -sh a.sql
sqlplus test/test@pdb1
alter system set pga_aggregate_limit = 6G;
alter system set pga_aggregate_target = 2G;
show parameter pga
set feed only
set time on
set timing on
@a.sql
8M -> 実行可能
経過: 00:00:01.07
32M -> 異常終了
ORA-07445: 例外が検出されました
(14)
https://www.postgresql.jp/document/14/html/limits.html
調べた限り上限はない模様。
大きなサイズのSQL文を作成し確認
(サーバ設定: CPU4コア、メモリ8G)
: > a.sql
echo "select 11111111111111111111 from tab1" >> a.sql
echo "where 11111111111111111111 = 11111111111111111111" >> a.sql
for i in `seq 1 10000000`; do
echo "and 11111111111111111111 = 11111111111111111111"
done >> a.sql
echo "and 11111111111111111111 = 11111111111111111111;" >> a.sql
du -sh a.sql
psql test
show work_mem;
set work_mem = '2GB';
show work_mem;
\o /dev/null
\timing 1
\i a.sql
64M -> 実行可能
時間: 160976.753 ミリ秒(02:40.977)
256M -> 実行可能
時間: 7499601.613 ミリ秒 (02:04:59.602)
512M -> 異常終了
2022-08-15 00:51:28.886 JST [1181] LOG: server process (PID 4154) was terminated by signal 9: Killed
2022-08-15 00:51:28.888 JST [1181] LOG: terminating any other active server processes
2022-08-15 00:51:28.986 JST [1181] LOG: all server processes terminated; reinitializing
(2019)
https://docs.microsoft.com/ja-jp/sql/sql-server/maximum-capacity-specifications-for-sql-server?redirectedfrom=MSDN&view=sql-server-ver15
https://support.microsoft.com/en-us/topic/issues-to-consider-when-changing-the-default-value-of-network-packet-size-for-sql-server-connections-8d36675c-0c00-9dac-16e6-b70bb1f2d4c0#:~:text=The%20default%20packet%20size%20set%20by%20Microsoft%20SQL%20Server%20is%204%2C096%20bytes.
Transact-SQLのバイト長 = 65,536 * (表形式データ ストリーム (TDS) パケットのサイズ)
既定のネットワーク パケットのサイズは 4 KB
network packet size 構成オプションによって制御されます
既定のSQL最大長は256MB
sp_configure 'show advanced options', 1;
go
reconfigure;
go
sp_configure 'network packet size (B)';
go
network packet size 構成オプションの最大値は32767バイトのため、
設定できるSQL最大長は約2GB