pdf viewer in asp net c# : How to add image to pdf file SDK software API .net windows asp.net sharepoint postgresql-9.4-A462-part2986

Chapter 22. Localization
the comparison is performed using
fr_FR
rules, because the explicit collation derivation overrides
the implicit one. Furthermore, given
SELECT a < b FROM test1;
the parser cannot determine which collation to apply, since the
a
and
b
columns have conflicting
implicitcollations. Sincethe
<
operator doesneedtoknowwhichcollationtouse, this willresult in an
error. The error can be resolved by attaching an explicit collation specifier to either input expression,
thus:
SELECT a < b COLLATE "de_DE" FROM test1;
or equivalently
SELECT a COLLATE "de_DE" < b FROM test1;
On the other hand, the structurally similar case
SELECT a || b FROM test1;
does not result in an error, because the
||
operator does not care about collations: its result is the
same regardless of the collation.
The collation assigned to a function or operator’s combined input expressions is also considered to
apply to the function or operator’s result, if the function or operator delivers a result of a collatable
data type. So, in
SELECT
*
FROM test1 ORDER BY a || ’foo’;
the ordering will be done according to
de_DE
rules. But this query:
SELECT
*
FROM test1 ORDER BY a || b;
results in an error, because even though the
||
operator doesn’t need to know a collation, the
ORDER
BY
clause does. As before, the conflict can be resolved with anexplicit collation specifier:
SELECT
*
FROM test1 ORDER BY a || b COLLATE "fr_FR";
22.2.2. Managing Collations
Acollation is anSQL schemaobjectthatmaps an SQLname to operatingsystem locales. Inparticular,
it maps to a combination of
LC_COLLATE
and
LC_CTYPE
.(As the name would suggest, the main
purpose of a collation is to set
LC_COLLATE
,which controls the sort order. But it is rarely necessary
in practice to have an
LC_CTYPE
setting that is different from
LC_COLLATE
,so it is more convenient
to collect these under one concept than to create another infrastructure for setting
LC_CTYPE
per
expression.) Also, a collationis tied toa character setencoding (see Section 22.3). Thesame collation
name may exist for different encodings.
On all platforms, the collations named
default
,
C
, and
POSIX
are available. Additional colla-
tions may be available depending on operating system support. The
default
collation selects the
LC_COLLATE
and
LC_CTYPE
values specified at database creation time. The
C
and
POSIX
collations
both specify “traditional C” behavior, in which only the ASCII letters “
A
”through “
Z
”are treated as
letters, and sorting is done strictly by character code byte values.
548
How to add image to pdf file - insert images into PDF in C#.net, ASP.NET, MVC, Ajax, WinForms, WPF
Sample C# code to add image, picture, logo or digital photo into PDF document page using PDF page editor control
adding an image to a pdf in preview; add an image to a pdf
How to add image to pdf file - VB.NET PDF insert image library: insert images into PDF in vb.net, ASP.NET, MVC, Ajax, WinForms, WPF
Guide VB.NET Programmers How to Add Images in PDF Document
add image to pdf online; how to add picture to pdf
Chapter 22. Localization
If the operating system provides support for using multiple locales within a single program
(
newlocale
and related functions), then when a database cluster is initialized,
initdb
populates
the system catalog
pg_collation
with collations based on all the locales it finds on the operating
system at the time. For example, the operating system might provide a locale named
de_DE.utf8
.
initdb
would then create a collation named
de_DE.utf8
for encoding
UTF8
that has both
LC_COLLATE
and
LC_CTYPE
set to
de_DE.utf8
.It will also create a collation with the
.utf8
tag
stripped off the name. So you could also use the collation under the name
de_DE
,which is less
cumbersome to write and makes the name less encoding-dependent. Note that, nevertheless, the
initial set of collation names is platform-dependent.
Incase a collationis neededthat has different values for
LC_COLLATE
and
LC_CTYPE
,a new collation
maybecreatedusingthe CREATE COLLATIONcommand. That command can alsobeusedtocreate
anew collation from an existing collation, which can be useful to be able to use operating-system-
independent collationnames in applications.
Within any particular database, only collations that use that database’s encoding are of interest. Other
entries in
pg_collation
are ignored. Thus, a stripped collation name such as
de_DE
can be consid-
ered unique within a given database even though it would not be unique globally. Use of the stripped
collation names is recommended, since it will make one less thing you need to change if you decide
to change toanother database encoding. Note however thatthe
default
,
C
,and
POSIX
collations can
be used regardless of the database encoding.
PostgreSQL considers distinct collation objects to be incompatible even when they have identical
properties. Thus for example,
SELECT a COLLATE "C" < b COLLATE "POSIX" FROM test1;
will draw an error even though the
C
and
POSIX
collations have identical behaviors. Mixing stripped
and non-stripped collation names is therefore not recommended.
22.3. Character Set Support
The character set support in PostgreSQL allows you to store text in a variety of character sets (also
called encodings), including single-byte character sets such as the ISO 8859 series and multiple-byte
character sets such as EUC (Extended Unix Code), UTF-8, and Mule internal code. All supported
character sets can be used transparently by clients, but a few are not supported for use within the
server (that is, as a server-side encoding). The default character set is selected while initializing your
PostgreSQL database cluster using
initdb
.It can be overridden when you create a database, so you
can have multiple databases each with a different character set.
An important restriction, however, is that each database’s character set must be compatible with the
database’s
LC_CTYPE
(character classification) and
LC_COLLATE
(string sort order) locale settings.
For
C
or
POSIX
locale, any character set is allowed, but for other locales there is only one character
set that will work correctly. (On Windows, however, UTF-8 encoding can be used with any locale.)
22.3.1. Supported Character Sets
Table 22-1 shows the character sets available for use in PostgreSQL.
Table 22-1. PostgreSQL Character Sets
549
VB.NET PDF Password Library: add, remove, edit PDF file password
This VB.NET example shows how to add PDF file password with access permission setting. passwordSetting.IsAssemble = True ' Add password to PDF file.
add image to pdf reader; add png to pdf acrobat
C# PDF Password Library: add, remove, edit PDF file password in C#
This example shows how to add PDF file password with access permission setting. passwordSetting.IsAssemble = true; // Add password to PDF file.
how to add an image to a pdf; add a picture to a pdf document
Chapter 22. Localization
Name
Description
Language
Server?
Bytes/Char
Aliases
BIG5
Big Five
Traditional
Chinese
No
1-2
WIN950
,
Windows950
EUC_CN
Extended
UNIX
Code-CN
Simplified
Chinese
Yes
1-3
EUC_JP
Extended
UNIX
Code-JP
Japanese
Yes
1-3
EUC_JIS_2004
Extended
UNIX
Code-JP, JIS X
0213
Japanese
Yes
1-3
EUC_KR
Extended
UNIX
Code-KR
Korean
Yes
1-3
EUC_TW
Extended
UNIX
Code-TW
Traditional
Chinese,
Taiwanese
Yes
1-3
GB18030
National
Standard
Chinese
No
1-4
GBK
Extended
National
Standard
Simplified
Chinese
No
1-2
WIN936
,
Windows936
ISO_8859_5
ISO8859-5,
ECMA113
Latin/Cyrillic
Yes
1
ISO_8859_6
ISO8859-6,
ECMA114
Latin/Arabic
Yes
1
ISO_8859_7
ISO8859-7,
ECMA118
Latin/Greek
Yes
1
ISO_8859_8
ISO8859-8,
ECMA121
Latin/Hebrew
Yes
1
JOHAB
JOHAB
Korean
(Hangul)
No
1-3
KOI8R
KOI8-R
Cyrillic
(Russian)
Yes
1
KOI8
KOI8U
KOI8-U
Cyrillic
(Ukrainian)
Yes
1
LATIN1
ISO8859-1,
ECMA94
Western
European
Yes
1
ISO88591
LATIN2
ISO8859-2,
ECMA94
Central
European
Yes
1
ISO88592
LATIN3
ISO8859-3,
ECMA94
South
European
Yes
1
ISO88593
LATIN4
ISO8859-4,
ECMA94
North
European
Yes
1
ISO88594
550
C# PDF File & Page Process Library SDK for C#.net, ASP.NET, MVC
C# File: Split PDF; C# Page: Insert PDF pages; C# Page: Delete PDF pages; C# Read: PDF Image Extract; C# Write: Insert text into PDF; C# Write: Add Image to PDF;
add picture to pdf in preview; add jpeg to pdf
VB.NET PDF File Compress Library: Compress reduce PDF size in vb.
Reduce image resources: Since images are usually or large size, images size reducing can help to reduce PDF file size effectively.
add image pdf document; adding an image to a pdf form
Chapter 22. Localization
Name
Description
Language
Server?
Bytes/Char
Aliases
LATIN5
ISO8859-9,
ECMA128
Turkish
Yes
1
ISO88599
LATIN6
ISO8859-10,
ECMA144
Nordic
Yes
1
ISO885910
LATIN7
ISO8859-13
Baltic
Yes
1
ISO885913
LATIN8
ISO8859-14
Celtic
Yes
1
ISO885914
LATIN9
ISO8859-15
LATIN1 with
Euro and
accents
Yes
1
ISO885915
LATIN10
ISO8859-16,
ASRO SR
14111
Romanian
Yes
1
ISO885916
MULE_INTERNAL
Mule internal
code
Multilingual
Emacs
Yes
1-4
SJIS
Shift JIS
Japanese
No
1-2
Mskanji
,
ShiftJIS
,
WIN932
,
Windows932
SHIFT_JIS_2004
Shift JIS, JIS
X0213
Japanese
No
1-2
SQL_ASCII
unspecified
(see text)
any
Yes
1
UHC
Unified
Hangul Code
Korean
No
1-2
WIN949
,
Windows949
UTF8
Unicode, 8-bit
all
Yes
1-4
Unicode
WIN866
Windows
CP866
Cyrillic
Yes
1
ALT
WIN874
Windows
CP874
Thai
Yes
1
WIN1250
Windows
CP1250
Central
European
Yes
1
WIN1251
Windows
CP1251
Cyrillic
Yes
1
WIN
WIN1252
Windows
CP1252
Western
European
Yes
1
WIN1253
Windows
CP1253
Greek
Yes
1
WIN1254
Windows
CP1254
Turkish
Yes
1
WIN1255
Windows
CP1255
Hebrew
Yes
1
WIN1256
Windows
CP1256
Arabic
Yes
1
WIN1257
Windows
CP1257
Baltic
Yes
1
551
VB.NET PDF File Merge Library: Merge, append PDF files in vb.net
RasterEdge .NET Image SDK has included a variety of image and document Add necessary references In addition, VB.NET users can append a PDF file to the end of a
add a picture to a pdf; how to add a jpeg to a pdf file
C# PDF File Compress Library: Compress reduce PDF size in C#.net
Convert smooth lines to curves. Detect and merge image fragments. Flatten visible layers. C#.NET DLLs: Compress PDF Document. Add necessary references:
how to add an image to a pdf in preview; add photo to pdf form
Chapter 22. Localization
Name
Description
Language
Server?
Bytes/Char
Aliases
WIN1258
Windows
CP1258
Vietnamese
Yes
1
ABC
,
TCVN
,
TCVN5712
,
VSCII
Not all client APIs support all the listed character sets. For example, the PostgreSQL JDBC driver
does not support
MULE_INTERNAL
,
LATIN6
,
LATIN8
,and
LATIN10
.
The
SQL_ASCII
setting behaves considerably differently from the other settings. When the server
character set is
SQL_ASCII
,the server interprets byte values 0-127 according to the ASCII standard,
while byte values 128-255are taken as uninterpretedcharacters. Noencoding conversionwill bedone
whenthe settingis
SQL_ASCII
.Thus, this settingis notsomucha declaration thata specificencoding
is in use, as a declaration of ignorance about the encoding. In most cases, if you are workingwith any
non-ASCII data, it is unwise to use the
SQL_ASCII
setting because PostgreSQL will be unable to
help you by converting or validating non-ASCII characters.
22.3.2. Setting the Character Set
initdb
defines the default character set (encoding) for a PostgreSQL cluster. For example,
initdb -E EUC_JP
sets the default character set to
EUC_JP
(Extended Unix Code for Japanese). You can use
--encoding
instead of
-E
if you prefer longer option strings. If no
-E
or
--encoding
option is
given,
initdb
attempts to determine the appropriate encoding to use based on the specified or
default locale.
You can specify a non-default encoding at database creation time, provided that the encoding is com-
patible with the selectedlocale:
createdb -E EUC_KR -T template0 --lc-collate=ko_KR.euckr --lc-ctype=ko_KR.euckr korean
This will create a database named
korean
that uses the character set
EUC_KR
,and locale
ko_KR
.
Another way to accomplish this is to use this SQL command:
CREATE DATABASE korean WITH ENCODING ’EUC_KR’ LC_COLLATE=’ko_KR.euckr’ LC_CTYPE=’ko_KR.euckr’ TEMPLATE=template0;
Notice that the above commands specify copying the
template0
database. When copying any other
database, the encoding and locale settings cannot be changed from those of the source database,
because that might result in corrupt data. For more information see Section 21.3.
The encoding for a database is stored in the system catalog
pg_database
.You can see it by using
the
psql -l
option or the
\l
command.
$
psql -l
List of databases
Name
|
Owner
| Encoding
|
Collation
|
Ctype
|
Access Privileges
-----------+----------+-----------+-------------+-------------+-------------------------------------
clocaledb | hlinnaka | SQL_ASCII | C
| C
|
englishdb | hlinnaka | UTF8
| en_GB.UTF8
| en_GB.UTF8
|
japanese
| hlinnaka | UTF8
| ja_JP.UTF8
| ja_JP.UTF8
|
korean
| hlinnaka | EUC_KR
| ko_KR.euckr | ko_KR.euckr |
postgres
| hlinnaka | UTF8
| fi_FI.UTF8
| fi_FI.UTF8
|
template0 | hlinnaka | UTF8
| fi_FI.UTF8
| fi_FI.UTF8
| {=c/hlinnaka,hlinnaka=CTc/hlinnaka}
template1 | hlinnaka | UTF8
| fi_FI.UTF8
| fi_FI.UTF8
| {=c/hlinnaka,hlinnaka=CTc/hlinnaka}
552
C# PDF File Merge Library: Merge, append PDF files in C#.net, ASP.
PDF document splitting, PDF page reordering and PDF page image and text Add necessary references: In addition, C# users can append a PDF file to the end of a
add signature image to pdf acrobat; add image to pdf file acrobat
VB.NET PDF File Split Library: Split, seperate PDF into multiple
1). ' Create output PDF file path list Dim outputFilePaths As New List(Of String) Dim i As Integer For i = 0 To splitIndex.Length outputFilePaths.Add(Program
how to add a picture to a pdf file; how to add image to pdf in acrobat
Chapter 22. Localization
(7 rows)
Important: On most modern operating systems, PostgreSQL can determine which character set
is implied by the
LC_CTYPE
setting, and it will enforce that only the matching database encoding
is used. On older systems it is your responsibility to ensure that you use the encoding expected
by the locale you have selected. A mistake in this area is likely to lead to strange behavior of
locale-dependent operations such as sorting.
PostgreSQL will allow superusers to create databases with
SQL_ASCII
encoding even when
LC_CTYPE
is not
C
or
POSIX
.As noted above,
SQL_ASCII
does not enforce that the data stored
in the database has any particular encoding, and so this choice poses risks of locale-dependent
misbehavior. Using this combination of settings is deprecated and may someday be forbidden
altogether.
22.3.3. Automatic Character Set Conversion Between
Server and Client
PostgreSQL supports automatic character set conversion between server and client for certain char-
acter set combinations. The conversion information is stored in the
pg_conversion
system catalog.
PostgreSQL comes with some predefined conversions, as shown in Table 22-2. You can create a new
conversion using the SQL command
CREATE CONVERSION
.
Table 22-2. Client/Server Character Set Conversions
Server Character Set
Available Client Character Sets
BIG5
not supported as a server encoding
EUC_CN
EUC_CN,
MULE_INTERNAL
,
UTF8
EUC_JP
EUC_JP,
MULE_INTERNAL
,
SJIS
,
UTF8
EUC_KR
EUC_KR,
MULE_INTERNAL
,
UTF8
EUC_TW
EUC_TW,
BIG5
,
MULE_INTERNAL
,
UTF8
GB18030
not supported as a server encoding
GBK
not supported as a server encoding
ISO_8859_5
ISO_8859_5,
KOI8R
,
MULE_INTERNAL
,
UTF8
,
WIN866
,
WIN1251
ISO_8859_6
ISO_8859_6,
UTF8
ISO_8859_7
ISO_8859_7,
UTF8
ISO_8859_8
ISO_8859_8,
UTF8
JOHAB
JOHAB,
UTF8
KOI8R
KOI8R,
ISO_8859_5
,
MULE_INTERNAL
,
UTF8
,
WIN866
,
WIN1251
KOI8U
KOI8U,
UTF8
LATIN1
LATIN1,
MULE_INTERNAL
,
UTF8
LATIN2
LATIN2,
MULE_INTERNAL
,
UTF8
,
WIN1250
LATIN3
LATIN3,
MULE_INTERNAL
,
UTF8
553
Chapter 22. Localization
Server Character Set
Available Client Character Sets
LATIN4
LATIN4,
MULE_INTERNAL
,
UTF8
LATIN5
LATIN5,
UTF8
LATIN6
LATIN6,
UTF8
LATIN7
LATIN7,
UTF8
LATIN8
LATIN8,
UTF8
LATIN9
LATIN9,
UTF8
LATIN10
LATIN10,
UTF8
MULE_INTERNAL
MULE_INTERNAL,
BIG5
,
EUC_CN
,
EUC_JP
,
EUC_KR
,
EUC_TW
,
ISO_8859_5
,
KOI8R
,
LATIN1
to
LATIN4
,
SJIS
,
WIN866
,
WIN1250
,
WIN1251
SJIS
not supported as a server encoding
SQL_ASCII
any (no conversion will be performed)
UHC
not supported as a server encoding
UTF8
all supported encodings
WIN866
WIN866,
ISO_8859_5
,
KOI8R
,
MULE_INTERNAL
,
UTF8
,
WIN1251
WIN874
WIN874,
UTF8
WIN1250
WIN1250,
LATIN2
,
MULE_INTERNAL
,
UTF8
WIN1251
WIN1251,
ISO_8859_5
,
KOI8R
,
MULE_INTERNAL
,
UTF8
,
WIN866
WIN1252
WIN1252,
UTF8
WIN1253
WIN1253,
UTF8
WIN1254
WIN1254,
UTF8
WIN1255
WIN1255,
UTF8
WIN1256
WIN1256,
UTF8
WIN1257
WIN1257,
UTF8
WIN1258
WIN1258,
UTF8
To enable automatic character set conversion, you have totellPostgreSQL the character set (encoding)
you would like to use inthe client. There are several ways to accomplish this:
Using the
\encoding
command in psql.
\encoding
allows you to change client encoding on the
fly. For example, to change the encoding to
SJIS
,type:
\encoding SJIS
libpq (Section 31.10) has functions to control the client encoding.
Using
SET client_encoding TO
.Setting the client encoding can be done with this SQL com-
mand:
SET CLIENT_ENCODING TO ’
value
’;
Also you can use the standard SQL syntax
SET NAMES
for this purpose:
SET NAMES ’
value
’;
To query the current client encoding:
554
Chapter 22. Localization
SHOW client_encoding;
To return to the default encoding:
RESET client_encoding;
Using
PGCLIENTENCODING
.If the environment variable
PGCLIENTENCODING
is defined in the
client’s environment, that client encoding is automatically selected when a connection to the server
is made. (This can subsequently be overridden using any of the other methods mentioned above.)
Using the configuration variable client_encoding. If the
client_encoding
variable is set, that
clientencoding is automatically selected whena connection tothe server is made. (This can subse-
quently be overridden using any of the other methods mentioned above.)
If the conversion of a particular character is not possible — suppose you chose
EUC_JP
for the server
and
LATIN1
for theclient, andsome Japanese characters arereturnedthatdonot havea representation
in
LATIN1
—an error is reported.
If the clientcharacter set is definedas
SQL_ASCII
,encodingconversion is disabled, regardless of the
server’s character set. Just as for the server, use of
SQL_ASCII
is unwise unless you are workingwith
all-ASCII data.
22.3.4. Further Reading
These are good sources to start learning about various kinds of encoding systems.
CJKV Information Processing: Chinese, Japanese, Korean & Vietnamese Computing
Contains detailed explanations of
EUC_JP
,
EUC_CN
,
EUC_KR
,
EUC_TW
.
http://www.unicode.org/
The web site of the Unicode Consortium.
RFC 3629
UTF-8 (8-bit UCS/Unicode Transformation Format) is defined here.
555
Chapter 23. Routine Database Maintenance
Tasks
PostgreSQL, like any database software, requires that certain tasks be performedregularlyto achieve
optimum performance. The tasks discussed here are required, butthey are repetitive innatureand can
easily be automated using standard tools such as cron scripts or Windows’ Task Scheduler. It is the
database administrator’s responsibility to set up appropriate scripts, and to check that they execute
successfully.
One obvious maintenance task is the creation of backup copies of the data on a regular schedule.
Without a recent backup, you have no chance of recovery after a catastrophe (disk failure, fire, mis-
takenlydroppinga critical table, etc.). The backupandrecoverymechanisms available inPostgreSQL
are discussed at length in Chapter 24.
The other main category of maintenance task is periodic “vacuuming” of the database. This activity
is discussed in Section 23.1. Closely related to this is updating the statistics that will be used by the
query planner, as discussed in Section 23.1.3.
Another task that might need periodic attention is log file management. This is discussed in Section
23.3.
check_postgres
1
is available for monitoring database health and reporting unusual conditions.
check_postgres integrates with Nagios and MRTG, but can be run standalone too.
PostgreSQL islow-maintenancecomparedtosomeother databasemanagementsystems. Nonetheless,
appropriate attention to these tasks will go far towards ensuring a pleasant and productive experience
with the system.
23.1. Routine Vacuuming
PostgreSQL databases require periodic maintenance known as vacuuming. For many installations, it
is sufficientto let vacuuming be performed by the autovacuumdaemon, which is described inSection
23.1.6. You might need to adjust the autovacuuming parameters described there to obtain best results
for your situation. Some database administrators will want to supplement or replace the daemon’s
activities with manually-managed
VACUUM
commands, which typically are executed according to a
schedule by cron or Task Scheduler scripts. To set up manually-managed vacuuming properly, it is
essential to understand the issues discussed in the next few subsections. Administrators who rely on
autovacuuming may still wish to skim this material to help them understand and adjust autovacuum-
ing.
23.1.1. Vacuuming Basics
PostgreSQL’s VACUUM command has to process each table on a regular basis for several reasons:
1. To recover or reuse disk space occupied by updated or deleted rows.
2. To update data statistics used by the PostgreSQL query planner.
3. To update the visibility map, whichspeeds up index-only scans.
1. http://bucardo.org/wiki/Check_postgres
556
Chapter 23. Routine Database Maintenance Tasks
4. To protect against loss of very old data due to transaction ID wraparound or multixact ID
wraparound.
Each of these reasons dictates performing
VACUUM
operations of varying frequency and scope, as
explained in the following subsections.
There are two variants of
VACUUM
:standard
VACUUM
and
VACUUM FULL
.
VACUUM FULL
can reclaim
more disk space but runs much more slowly. Also, the standard form of
VACUUM
can run in parallel
with production database operations. (Commands such as
SELECT
,
INSERT
,
UPDATE
,and
DELETE
will continue to functionnormally, thoughyouwill not be able to modify the definition of a tablewith
commands such as
ALTER TABLE
while it is being vacuumed.)
VACUUM FULL
requires exclusive
lockon the table it is working on, and therefore cannot be done in parallel with other use of the table.
Generally, therefore, administrators should strive to use standard
VACUUM
and avoid
VACUUM FULL
.
VACUUM
creates a substantial amount of I/Otraffic, whichcan cause poor performance for other active
sessions. There are configuration parameters that can be adjusted to reduce the performance impact
of background vacuuming — see Section 18.4.4.
23.1.2. Recovering Disk Space
In PostgreSQL, an
UPDATE
or
DELETE
of a row does not immediately remove the old version of the
row. This approach is necessary to gain the benefits of multiversion concurrency control (MVCC, see
Chapter 13): the row version must not be deleted while it is still potentially visible to other transac-
tions. But eventually, an outdated or deleted row version is no longer of interest to any transaction.
The space it occupies must then be reclaimed for reuse by new rows, to avoid unbounded growth of
disk space requirements. This is done by running
VACUUM
.
The standard form of
VACUUM
removes dead row versions in tables and indexes and marks the space
available for future reuse. However, it will not return the space to the operating system, except in
the special case where one or more pages at the end of a table become entirely free and an exclusive
table lock can be easily obtained. In contrast,
VACUUM FULL
actively compacts tables by writing a
complete new version of the table file with no dead space. This minimizes the size of the table, but
can take a long time. It also requires extra disk space for the new copyof the table, until the operation
completes.
The usual goal of routine vacuuming is to do standard
VACUUM
s often enough to avoid needing
VACUUM FULL
. The autovacuum daemon attempts to work this way, and in fact will never issue
VACUUM FULL
.In this approach, the idea is not to keep tables at their minimum size, but to maintain
steady-state usage of disk space: each table occupies space equivalent to its minimum size plus how-
ever much space gets used up between vacuumings. Although
VACUUM FULL
can be used to shrink a
table back to its minimum size and return the disk space to the operating system, there is not much
point in this if the tablewill just grow againinthefuture. Thus, moderately-frequentstandard
VACUUM
runs are a better approachthaninfrequent
VACUUM FULL
runs for maintaining heavily-updated tables.
Some administrators prefer to schedule vacuuming themselves, for example doing all the work at
night when load is low. The difficulty with doing vacuuming according to a fixed schedule is that if
atable has an unexpected spike in update activity, it may get bloated to the point that
VACUUM FULL
is really necessary to reclaim space. Using the autovacuum daemon alleviates this problem, since the
daemon schedules vacuuming dynamically in response to update activity. It is unwise to disable the
daemon completely unless you have an extremely predictable workload. One possible compromise
is to set the daemon’s parameters so that it will only react to unusually heavy update activity, thus
keeping things from getting out of hand, while scheduled
VACUUM
sare expected to do the bulk of the
work when the load is typical.
557
Documents you may be interested
Documents you may be interested