Documentation Source Text

Hex Artifact Content
Login

Artifact 174c2a23e21a723429bbee695661d36f4a78d23b:


0000: 3c 74 69 74 6c 65 3e 43 68 61 6e 67 65 20 69 6e  <title>Change in
0010: 20 44 65 66 61 75 6c 74 20 50 61 67 65 20 53 69   Default Page Si
0020: 7a 65 20 69 6e 20 53 51 4c 69 74 65 20 56 65 72  ze in SQLite Ver
0030: 73 69 6f 6e 20 33 2e 31 32 2e 30 3c 2f 74 69 74  sion 3.12.0</tit
0040: 6c 65 3e 0a 3c 74 63 6c 3e 68 64 5f 6b 65 79 77  le>.<tcl>hd_keyw
0050: 6f 72 64 73 20 7b 76 65 72 73 69 6f 6e 20 33 2e  ords {version 3.
0060: 31 32 2e 30 20 70 61 67 65 20 73 69 7a 65 20 63  12.0 page size c
0070: 68 61 6e 67 65 7d 20 5c 0a 20 20 20 20 20 7b 69  hange} \.     {i
0080: 6e 63 72 65 61 73 65 20 69 6e 20 74 68 65 20 64  ncrease in the d
0090: 65 66 61 75 6c 74 20 70 61 67 65 20 73 69 7a 65  efault page size
00a0: 7d 3c 2f 74 63 6c 3e 0a 0a 3c 68 31 20 61 6c 69  }</tcl>..<h1 ali
00b0: 67 6e 3d 22 63 65 6e 74 65 72 22 3e 54 68 65 20  gn="center">The 
00c0: 44 65 66 61 75 6c 74 20 50 61 67 65 20 53 69 7a  Default Page Siz
00d0: 65 20 43 68 61 6e 67 65 20 6f 66 20 53 51 4c 69  e Change of SQLi
00e0: 74 65 20 33 2e 31 32 2e 30 3c 2f 68 31 3e 0a 0a  te 3.12.0</h1>..
00f0: 3c 68 32 3e 31 2e 30 20 49 6e 74 72 6f 64 75 63  <h2>1.0 Introduc
0100: 74 69 6f 6e 3c 2f 68 32 3e 0a 0a 3c 70 3e 0a 41  tion</h2>..<p>.A
0110: 6e 20 53 51 4c 69 74 65 20 64 61 74 61 62 61 73  n SQLite databas
0120: 65 20 66 69 6c 65 20 63 6f 6e 73 69 73 74 73 20  e file consists 
0130: 6f 66 20 6f 6e 65 20 6f 72 20 6d 6f 72 65 20 22  of one or more "
0140: 70 61 67 65 73 22 2e 0a 46 6f 72 20 61 20 73 69  pages"..For a si
0150: 6e 67 6c 65 20 64 61 74 61 62 61 73 65 20 66 69  ngle database fi
0160: 6c 65 2c 20 61 6c 6c 20 70 61 67 65 73 20 61 72  le, all pages ar
0170: 65 20 74 68 65 20 73 61 6d 65 20 73 69 7a 65 2c  e the same size,
0180: 20 74 68 6f 75 67 68 0a 66 6f 72 20 64 69 66 66   though.for diff
0190: 65 72 65 6e 74 20 64 61 74 61 62 61 73 65 20 66  erent database f
01a0: 69 6c 65 73 2c 20 74 68 65 20 70 61 67 65 20 73  iles, the page s
01b0: 69 7a 65 20 63 61 6e 20 61 6e 79 20 70 6f 77 65  ize can any powe
01c0: 72 20 6f 66 0a 74 77 6f 20 62 65 74 77 65 65 6e  r of.two between
01d0: 20 35 31 32 20 61 6e 64 20 36 35 35 33 36 2c 20   512 and 65536, 
01e0: 69 6e 63 6c 75 73 69 76 65 2e 0a 3c 2f 70 3e 0a  inclusive..</p>.
01f0: 0a 3c 70 3e 0a 53 69 6e 63 65 20 74 68 65 20 53  .<p>.Since the S
0200: 51 4c 69 74 65 20 64 61 74 61 62 61 73 65 20 66  QLite database f
0210: 69 6c 65 20 66 6f 72 6d 61 74 20 77 61 73 20 64  ile format was d
0220: 65 73 69 67 6e 65 64 20 28 69 6e 20 32 30 30 33  esigned (in 2003
0230: 29 20 74 68 65 0a 64 65 66 61 75 6c 74 20 5b 70  ) the.default [p
0240: 61 67 65 5f 73 69 7a 65 7c 70 61 67 65 20 73 69  age_size|page si
0250: 7a 65 5d 20 66 6f 72 20 6e 65 77 20 64 61 74 61  ze] for new data
0260: 62 61 73 65 73 20 68 61 73 20 62 65 65 6e 20 31  bases has been 1
0270: 30 32 34 20 62 79 74 65 73 2e 20 20 0a 54 68 69  024 bytes.  .Thi
0280: 73 20 77 61 73 20 61 20 72 65 61 73 6f 6e 61 62  s was a reasonab
0290: 6c 65 20 63 68 6f 69 63 65 20 69 6e 20 32 30 30  le choice in 200
02a0: 33 2e 20 20 42 75 74 20 6f 6e 20 6d 6f 64 65 72  3.  But on moder
02b0: 6e 20 68 61 72 64 77 61 72 65 2c 20 0a 61 20 34  n hardware, .a 4
02c0: 30 39 36 20 62 79 74 65 20 70 61 67 65 20 69 73  096 byte page is
02d0: 20 61 20 66 61 73 74 65 72 20 61 6e 64 20 62 65   a faster and be
02e0: 74 74 65 72 20 63 68 6f 69 63 65 2e 0a 53 6f 2c  tter choice..So,
02f0: 20 62 65 67 69 6e 6e 69 6e 67 20 77 69 74 68 20   beginning with 
0300: 53 51 4c 69 74 65 20 5b 76 65 72 73 69 6f 6e 20  SQLite [version 
0310: 33 2e 31 32 2e 30 5d 20 28 5b 64 61 74 65 6f 66  3.12.0] ([dateof
0320: 3a 33 2e 31 32 2e 30 5d 29 29 20 74 68 65 20 64  :3.12.0])) the d
0330: 65 66 61 75 6c 74 20 0a 70 61 67 65 20 73 69 7a  efault .page siz
0340: 65 20 66 6f 72 20 6e 65 77 20 64 61 74 61 62 61  e for new databa
0350: 73 65 20 66 69 6c 65 73 20 68 61 73 20 62 65 65  se files has bee
0360: 6e 20 69 6e 63 72 65 61 73 65 64 20 74 6f 20 34  n increased to 4
0370: 30 39 36 20 62 79 74 65 73 2e 0a 3c 2f 70 3e 0a  096 bytes..</p>.
0380: 0a 3c 70 3e 0a 54 68 65 20 75 70 70 65 72 20 62  .<p>.The upper b
0390: 6f 75 6e 64 20 6f 6e 20 74 68 65 20 64 61 74 61  ound on the data
03a0: 62 61 73 65 20 5b 63 61 63 68 65 5f 73 69 7a 65  base [cache_size
03b0: 7c 63 61 63 68 65 20 73 69 7a 65 5d 20 68 61 73  |cache size] has
03c0: 20 0a 74 72 61 64 69 74 69 6f 6e 61 6c 6c 79 20   .traditionally 
03d0: 64 65 66 61 75 6c 74 65 64 20 74 6f 20 32 30 30  defaulted to 200
03e0: 30 20 70 61 67 65 73 2e 20 20 53 51 4c 69 74 65  0 pages.  SQLite
03f0: 20 5b 76 65 72 73 69 6f 6e 20 33 2e 31 32 2e 30   [version 3.12.0
0400: 5d 20 61 6c 73 6f 0a 63 68 61 6e 67 65 73 20 74  ] also.changes t
0410: 68 69 73 20 64 65 66 61 75 6c 74 20 73 65 74 74  his default sett
0420: 69 6e 67 20 74 6f 20 62 65 20 22 2d 32 30 30 30  ing to be "-2000
0430: 22 20 77 68 69 63 68 20 6d 65 61 6e 73 20 32 30  " which means 20
0440: 30 30 2a 31 30 32 34 0a 62 79 74 65 73 2c 20 72  00*1024.bytes, r
0450: 65 67 61 72 64 6c 65 73 73 20 6f 66 20 70 61 67  egardless of pag
0460: 65 20 73 69 7a 65 2e 20 20 53 6f 2c 20 74 68 65  e size.  So, the
0470: 20 75 70 70 65 72 20 62 6f 75 6e 64 20 6f 6e 20   upper bound on 
0480: 74 68 65 20 61 6d 6f 75 6e 74 0a 6f 66 20 6d 65  the amount.of me
0490: 6d 6f 72 79 20 75 73 65 64 20 66 6f 72 20 74 68  mory used for th
04a0: 65 20 70 61 67 65 20 63 61 63 68 65 20 69 73 20  e page cache is 
04b0: 75 6e 63 68 61 6e 67 65 64 2e 0a 3c 2f 70 3e 0a  unchanged..</p>.
04c0: 0a 3c 68 32 3e 32 2e 30 20 3c 75 3e 4e 6f 74 3c  .<h2>2.0 <u>Not<
04d0: 2f 75 3e 20 61 20 43 6f 6d 70 61 74 69 62 69 6c  /u> a Compatibil
04e0: 69 74 79 20 42 72 65 61 6b 3c 2f 68 32 3e 0a 0a  ity Break</h2>..
04f0: 3c 70 3e 0a 54 68 65 73 65 20 63 68 61 6e 67 65  <p>.These change
0500: 73 20 69 6e 20 74 68 65 20 64 65 66 61 75 6c 74  s in the default
0510: 20 62 65 68 61 76 69 6f 72 20 6f 66 20 53 51 4c   behavior of SQL
0520: 69 74 65 20 61 72 65 20 6e 6f 74 0a 61 20 63 6f  ite are not.a co
0530: 6d 70 61 74 69 62 69 6c 69 74 79 20 62 72 65 61  mpatibility brea
0540: 6b 2e 20 20 41 6c 6c 20 6c 65 67 61 63 79 20 64  k.  All legacy d
0550: 61 74 61 62 61 73 65 20 66 69 6c 65 73 20 63 6f  atabase files co
0560: 6e 74 69 6e 75 65 20 74 6f 20 62 65 0a 72 65 61  ntinue to be.rea
0570: 64 61 62 6c 65 20 61 6e 64 20 77 72 69 74 61 62  dable and writab
0580: 6c 65 20 62 79 20 6e 65 77 65 72 20 76 65 72 73  le by newer vers
0590: 69 6f 6e 73 20 6f 66 20 53 51 4c 69 74 65 2c 20  ions of SQLite, 
05a0: 61 6e 64 20 61 6c 6c 20 6e 65 77 6c 79 0a 63 72  and all newly.cr
05b0: 65 61 74 65 64 20 64 61 74 61 62 61 73 65 20 66  eated database f
05c0: 69 6c 65 73 20 63 6f 6e 74 69 6e 75 65 20 74 6f  iles continue to
05d0: 20 62 65 20 72 65 61 64 61 62 6c 65 20 61 6e 64   be readable and
05e0: 20 77 72 69 74 61 62 6c 65 20 62 79 0a 6c 65 67   writable by.leg
05f0: 61 63 79 20 76 65 72 73 69 6f 6e 73 20 6f 66 20  acy versions of 
0600: 74 68 65 20 53 51 4c 69 74 65 20 6c 69 62 72 61  the SQLite libra
0610: 72 79 2e 20 20 54 68 65 20 6f 6e 6c 79 20 74 68  ry.  The only th
0620: 69 6e 67 20 74 68 61 74 20 69 73 20 63 68 61 6e  ing that is chan
0630: 67 69 6e 67 0a 69 73 20 73 6f 6d 65 20 64 65 66  ging.is some def
0640: 61 75 6c 74 20 73 65 74 74 69 6e 67 73 2e 20 20  ault settings.  
0650: 54 68 69 73 20 73 68 6f 75 6c 64 20 72 65 73 75  This should resu
0660: 6c 74 20 69 6e 20 61 20 70 65 72 66 6f 72 6d 61  lt in a performa
0670: 6e 63 65 0a 69 6e 63 72 65 61 73 65 20 66 6f 72  nce.increase for
0680: 20 6d 61 6e 79 20 61 70 70 6c 69 63 61 74 69 6f   many applicatio
0690: 6e 73 2e 0a 3c 2f 70 3e 0a 0a 3c 70 3e 0a 54 68  ns..</p>..<p>.Th
06a0: 6f 75 67 68 20 6d 6f 73 74 20 61 70 70 6c 69 63  ough most applic
06b0: 61 74 69 6f 6e 20 73 68 6f 75 6c 64 20 6e 6f 74  ation should not
06c0: 20 6e 6f 74 69 63 65 20 61 6e 79 20 63 68 61 6e   notice any chan
06d0: 67 65 20 28 65 78 63 65 70 74 20 74 68 61 74 0a  ge (except that.
06e0: 74 68 65 79 20 72 75 6e 20 61 20 6c 69 74 74 6c  they run a littl
06f0: 65 20 66 61 73 74 65 72 29 2c 20 69 66 20 70 72  e faster), if pr
0700: 6f 62 6c 65 6d 73 20 61 72 69 73 65 20 74 68 65  oblems arise the
0710: 6e 20 74 68 65 0a 6c 65 67 61 63 79 20 62 65 68  n the.legacy beh
0720: 61 76 69 6f 72 20 63 61 6e 20 62 65 20 72 65 73  avior can be res
0730: 74 6f 72 65 64 20 61 74 20 63 6f 6d 70 69 6c 65  tored at compile
0740: 2d 74 69 6d 65 20 62 79 20 75 73 69 6e 67 20 74  -time by using t
0750: 68 65 0a 66 6f 6c 6c 6f 77 69 6e 67 20 6f 70 74  he.following opt
0760: 69 6f 6e 73 20 74 6f 20 74 68 65 20 43 2d 63 6f  ions to the C-co
0770: 6d 70 69 6c 65 72 3a 0a 0a 3c 62 6c 6f 63 6b 71  mpiler:..<blockq
0780: 75 6f 74 65 3e 3c 70 72 65 3e 0a 2d 44 53 51 4c  uote><pre>.-DSQL
0790: 49 54 45 5f 44 45 46 41 55 4c 54 5f 50 41 47 45  ITE_DEFAULT_PAGE
07a0: 5f 53 49 5a 45 3d 31 30 32 34 20 0a 2d 44 53 51  _SIZE=1024 .-DSQ
07b0: 4c 49 54 45 5f 44 45 46 41 55 4c 54 5f 43 41 43  LITE_DEFAULT_CAC
07c0: 48 45 5f 53 49 5a 45 3d 32 30 30 30 0a 3c 2f 70  HE_SIZE=2000.</p
07d0: 72 65 3e 3c 2f 62 6c 6f 63 6b 71 75 6f 74 65 3e  re></blockquote>
07e0: 0a 0a 3c 70 3e 0a 54 68 65 20 70 61 67 65 20 73  ..<p>.The page s
07f0: 69 7a 65 20 61 6e 64 20 63 61 63 68 65 20 73 69  ize and cache si
0800: 7a 65 20 63 61 6e 20 61 6c 73 6f 20 62 65 20 73  ze can also be s
0810: 65 74 20 6f 72 20 63 68 61 6e 67 65 64 20 61 74  et or changed at
0820: 20 72 75 6e 2d 74 69 6d 65 20 75 73 69 6e 67 20   run-time using 
0830: 74 68 65 0a 5b 70 61 67 65 5f 73 69 7a 65 20 70  the.[page_size p
0840: 72 61 67 6d 61 5d 20 61 6e 64 20 5b 63 61 63 68  ragma] and [cach
0850: 65 5f 73 69 7a 65 20 70 72 61 67 6d 61 5d 2c 20  e_size pragma], 
0860: 72 65 73 70 65 63 74 69 76 65 6c 79 2e 0a 0a 3c  respectively...<
0870: 68 32 3e 33 2e 30 20 50 6f 73 73 69 62 6c 65 20  h2>3.0 Possible 
0880: 4e 65 67 61 74 69 76 65 20 43 6f 6e 73 65 71 75  Negative Consequ
0890: 65 6e 63 65 73 20 4f 66 20 54 68 69 73 20 43 68  ences Of This Ch
08a0: 61 6e 67 65 3c 2f 68 32 3e 0a 0a 3c 70 3e 0a 54  ange</h2>..<p>.T
08b0: 68 65 20 6d 69 6e 69 6d 75 6d 20 73 69 7a 65 20  he minimum size 
08c0: 6f 66 20 61 6e 20 53 51 4c 69 74 65 20 64 61 74  of an SQLite dat
08d0: 61 62 61 73 65 20 69 73 20 6f 6e 65 20 70 61 67  abase is one pag
08e0: 65 20 66 6f 72 20 65 61 63 68 20 74 61 62 6c 65  e for each table
08f0: 20 61 6e 64 0a 65 61 63 68 20 69 6e 64 65 78 2e   and.each index.
0900: 20 20 57 69 74 68 20 61 20 6c 61 72 67 65 72 20    With a larger 
0910: 70 61 67 65 20 73 69 7a 65 2c 20 74 68 65 20 73  page size, the s
0920: 69 7a 65 20 6f 66 20 61 6e 20 65 6d 70 74 79 20  ize of an empty 
0930: 64 61 74 61 62 61 73 65 0a 66 6f 72 20 61 20 67  database.for a g
0940: 69 76 65 6e 20 73 63 68 65 6d 61 20 77 69 6c 6c  iven schema will
0950: 20 67 72 6f 77 20 62 79 20 61 20 66 61 63 74 6f   grow by a facto
0960: 72 20 6f 66 20 66 6f 75 72 2c 20 74 68 65 72 65  r of four, there
0970: 66 6f 72 65 2e 20 20 48 6f 77 65 76 65 72 2c 0a  fore.  However,.
0980: 6f 6e 63 65 20 74 68 65 20 64 61 74 61 62 61 73  once the databas
0990: 65 20 62 65 67 69 6e 73 20 74 6f 20 66 69 6c 6c  e begins to fill
09a0: 20 77 69 74 68 20 63 6f 6e 74 65 6e 74 20 74 68   with content th
09b0: 65 20 73 69 7a 65 20 6f 66 20 74 68 65 20 6f 6c  e size of the ol
09c0: 64 65 72 0a 31 30 32 34 2d 62 79 74 65 20 70 61  der.1024-byte pa
09d0: 67 65 20 64 61 74 61 62 61 73 65 73 20 61 6e 64  ge databases and
09e0: 20 74 68 65 20 6e 65 77 65 72 20 34 30 39 36 2d   the newer 4096-
09f0: 62 79 74 65 20 70 61 67 65 20 64 61 74 61 62 61  byte page databa
0a00: 73 65 73 20 77 69 6c 6c 0a 71 75 69 63 6b 6c 79  ses will.quickly
0a10: 20 63 6f 6e 76 65 72 67 65 2e 20 20 44 75 65 20   converge.  Due 
0a20: 74 6f 20 72 65 6c 61 78 65 64 20 62 69 6e 2d 70  to relaxed bin-p
0a30: 61 63 6b 69 6e 67 20 63 6f 6e 73 74 72 61 69 6e  acking constrain
0a40: 74 73 2c 20 74 68 65 20 0a 34 30 39 36 2d 62 79  ts, the .4096-by
0a50: 74 65 20 70 61 67 65 20 73 69 7a 65 20 6d 69 67  te page size mig
0a60: 68 74 20 61 63 74 75 61 6c 6c 79 20 72 65 73 75  ht actually resu
0a70: 6c 74 20 69 6e 20 61 20 73 6d 61 6c 6c 65 72 20  lt in a smaller 
0a80: 66 69 6c 65 2c 20 6f 6e 63 65 0a 73 75 62 73 74  file, once.subst
0a90: 61 6e 74 69 61 6c 20 63 6f 6e 74 65 6e 74 20 69  antial content i
0aa0: 73 20 61 64 64 65 64 2e 0a 3c 2f 70 3e 0a        s added..</p>.