Vlad Khorsun 248f11525a Implement #7818 : Extend rdb$get_context('SYSTEM', '***') with other info from MON$ATTACHMENT 2 yıl önce
..
license 6fd54c9871 Fix licenses urls , sourcecode tree is moved to SVN from CVS 13 yıl önce
sql.extensions 248f11525a Implement #7818 : Extend rdb$get_context('SYSTEM', '***') with other info from MON$ATTACHMENT 2 yıl önce
Firebird_conf.txt a0692f497c CORE-6004: Add a switch to disable the "TCP Loopback Fast Path" option 7 yıl önce
README.DiskSpaceAllocation 1b83fbc2c8 A bit better wording. 18 yıl önce
README.IPv6 13aa5420f2 Allow to enforce IPv4 or IPv6 in URL-like connection string. 9 yıl önce
README.NTSecurity df59a7a41a misc 18 yıl önce
README.Optimizer.txt 854da4e241 Misc. 21 yıl önce
README.SecureRemotePassword.html 77d6529b6c Doc cleanup 7 yıl önce
README.Win32LibraryInstallation.txt 6a47a28ba0 More Win32 1.5 -> HEAD synchronisation. Updated documentation regarding gds32.dll and instclient.exe 22 yıl önce
README.Win9X_NT_embedding aca5a83a46 Fixed CORE-2609: Update support for Windows 98/ME and NT4.0 16 yıl önce
README.build.macosx.md 5bf5e84622 Add a short instruction for building on MacOSX using brew 5 yıl önce
README.build.mingw.html f2b24d02ca Misc. 12 yıl önce
README.build.msvc.html 3d1c4e71ad remove fb version info from build instructions 9 yıl önce
README.build.posix.html ad327ed8b9 Update FreeBSD section for trunk in doc/README.build.posix.html 11 yıl önce
README.coding.style 4ca32b84ec An additional related to previous commit 22 yıl önce
README.connection_string_charset.txt 7a110f4be0 CORE-2929 - 'Invalid ESCAPE sequence' when connecting to the database 15 yıl önce
README.connection_strings 337ef7707d Adjust docs and CMake build re. new engine name. 9 yıl önce
README.external_routines.txt 9e6a713f0f Misc. 16 yıl önce
README.fb_cancel_operation 0b2a994c27 Misc 16 yıl önce
README.fb_shutdown ce41588da2 Enhanced docs on fb_shutdown_callback() 8 yıl önce
README.fbsvcmgr a14a2159b2 Implemented CORE-2197: added support for -nodbtriggers switch in gbak into services API 17 yıl önce
README.garbage_collector 902671a044 Misc. 20 yıl önce
README.gbak 46102b6084 Fix mistype in CORE-5538 documentation 6 yıl önce
README.incompatibilities.3to4.txt 44660f8680 Add section about sequences to README.incompatibilities.3to4.txt (CORE-6084 and CORE-6376). 5 yıl önce
README.incompatibilities.txt 89ec718d3b Updated docs. 12 yıl önce
README.instsvc 08503e2be8 Update documentation for instsvc 18 yıl önce
README.intl b68d1dfc0c Misc. 14 yıl önce
README.isql_enhancements.txt ee53a7c46b Change docs (#6910). 4 yıl önce
README.makefiles 4a80dfe3a8 Note for POSIX builders 19 yıl önce
README.modern_cpp.md 974a641d8e Refactor internal representation of configuration entries table. 5 yıl önce
README.monitoring_tables 22ad236f62 CORE-6300 (next attachment/statement ID) and some other additions 5 yıl önce
README.online_validation cc33027282 Misc. 10 yıl önce
README.performance_monitoring 59b235cea3 Small corrections 22 yıl önce
README.plugins.html 72a042660b Update documentation - sample of plugin was renamed 4 yıl önce
README.providers.html 337ef7707d Adjust docs and CMake build re. new engine name. 9 yıl önce
README.raw_devices b3c33aeeb6 Renamed aliases.conf to databases.conf as suggested by Dmitry 13 yıl önce
README.read_consistency.md 6217a01583 Update documentation. 5 yıl önce
README.read_password_from_file a5ff7ca091 Misc 17 yıl önce
README.replication.md 340bd02363 Renamed replication 'log' to 'journal' 4 yıl önce
README.security_database.txt b2b2a3bb00 Documentation 5 yıl önce
README.services_extension e61ffdfea1 Improvement #7186 : FB4 Nbackup RDB$BACKUP_HISTORY issue 3 yıl önce
README.session_idle_timeouts edcac34f81 Update docs after fix for CORE-5508 8 yıl önce
README.sha1 a749151080 Correct some files to refer to FB2 and security2.fdb 21 yıl önce
README.statement_timeouts edcac34f81 Update docs after fix for CORE-5508 8 yıl önce
README.superclassic cec668d7fd Misc. 17 yıl önce
README.trace_services 6247ba07eb Misc. 16 yıl önce
README.transaction_at_snapshot.md cfbcbeda3c Make it possible to start multiple transactions using the same initial transaction snapshot - CORE-6018 (#193) 7 yıl önce
README.trusted_authentication abde3b2cad Misc. 10 yıl önce
README.user.embedded c3c18f0978 Misc. 15 yıl önce
README.user.troubleshooting cd010ff939 Misc 17 yıl önce
README.wire.compression.html 11c452251d Make zlib allocate memory from our pool 11 yıl önce
README.xnet c5c49d5e5e Added description of XNET. 20 yıl önce
Using_OO_API.html ea6610a185 Docs 3 yıl önce
ambiguity.txt 89af0c2a66 Little corrections. 21 yıl önce
install_windows_manually.txt 9f2b20df1e remove version mention, split database init to seperate doc 5 yıl önce
ods11-index-structure.html 4569af61eb ODS11 index structure description 21 yıl önce

README.DiskSpaceAllocation


Since the beginning, Firebird had no rules of how to allocate disk space
for database file(s). It just writes new allocated pages in not determined
order (because of dependencies between pages to serve "careful write" strategy).

This approach is very simple but has some drawbacks :

- because of not determined order of writes, there may be such situation when
page cache contains many dirty pages at time when new allocated page must be
written but can't because out of disk space. In such cases often all other
dirty pages are lost because administrators prefer to shutdown database
before making some space on disk available. This leads to serious corruptions.

- allocating disk space by relatively small chunks may lead to significant file
fragmentation at file system level and reduce performance of large scans (for
example during backup).


Using new ODS 11.1, Firebird changes its disk space allocation algorithm to
avoid corruptions in out of disk space conditions and to give the file system a
chance to avoid fragmentation. These changes are described below.

a) Every newly allocated page is written on disk immediately before returning to
the engine. If page can't be written then allocation doesn't happen, PIP bit
is not cleared and appropriate IO error is raised. This error can't lead to
corruptions as we have a guarantee that all dirty pages in cache have disk
space allocated and can be written safely.

This change makes one additional write of every newly allocated page compared
with old behavior. So performance penalty is expected during the database file
growth. To reduce this penalty Firebird groups writes of newly allocated pages
up to 128KB at a time and tracks number of "initialized" pages at PIP header.

Note : newly allocated page will be written to disk twice only if this page
is allocated first time. I.e. if page was allocated, freed and allocated again
it will not be written twice on second allocation.

b) To avoid file fragmentation, Firebird used appropriate file system's API to
preallocate disk space by relatively large chunks. Currently such API exists
only in Windows but it was recently added into Linux API and may be implemented
in such popular file system's as ext2, etc in the future. So this feature is
currently implemented only in Windows builds of Firebird and may be implemented
in Linux builds in the future.

For better control of disk space preallocation, new setting in Firebird.conf
was introduced : DatabaseGrowthIncrement. This is upper bound of preallocation
chunk size in bytes. Default value is 128MB. When engine needs more disk space
it allocates 1/16th of already allocated space but no less than 128KB and no more
than DatabaseGrowthIncrement value. If DatabaseGrowthIncrement is set to zero then
preallocation is disabled. Space for database shadow files is not preallocated.
Also preallocation is disabled if "No reserve" option is set for database.

Note : preallocation also allows to avoid corruptions in out of disk space
condition - in such case there is a big chance that database has enough space
preallocated to operate until administrator makes some disk space available.


Author: Vlad Khorsun,