Artifact bcd7e9b47b469a065e5476c4e6c167edb9af9714:
Ticket change
[bcd7e9b47b]
- Closed ticket 678eb0c20a: Large files make memory usage spike through the roof. plus 2 other changes
by
drh on
2009-09-16 16:20:55.
0000: 44 20 32 30 30 39 2d 30 39 2d 31 36 54 31 36 3a D 2009-09-16T16:
0010: 32 30 3a 35 35 0a 4a 20 2b 63 6f 6d 6d 65 6e 74 20:55.J +comment
0020: 20 5c 6e 5c 6e 3c 68 72 3e 3c 69 3e 64 72 68 5c \n\n<hr><i>drh\
0030: 73 61 64 64 65 64 5c 73 6f 6e 5c 73 32 30 30 39 sadded\son\s2009
0040: 2d 30 39 2d 31 36 5c 73 31 36 3a 32 30 3a 35 35 -09-16\s16:20:55
0050: 3a 3c 2f 69 3e 3c 62 72 3e 5c 6e 4e 6f 2c 5c 73 :</i><br>\nNo,\s
0060: 66 6f 73 73 69 6c 5c 73 69 73 5c 73 3c 75 3e 6e fossil\sis\s<u>n
0070: 6f 74 3c 2f 75 3e 5c 73 70 75 6c 6c 69 6e 67 5c ot</u>\spulling\
0080: 73 74 68 65 5c 73 77 68 6f 6c 65 5c 73 72 65 70 sthe\swhole\srep
0090: 6f 73 69 74 6f 72 79 5c 73 69 6e 74 6f 5c 73 6d ository\sinto\sm
00a0: 65 6d 6f 72 79 2e 2e 2e 2e 5c 72 5c 6e 5c 72 5c emory....\r\n\r\
00b0: 6e 42 75 74 5c 73 69 74 5c 73 64 6f 65 73 5c 73 nBut\sit\sdoes\s
00c0: 63 6f 6e 73 74 72 75 63 74 5c 73 61 6e 5c 73 65 construct\san\se
00d0: 6e 74 69 72 65 5c 73 48 54 54 50 5c 73 72 65 70 ntire\sHTTP\srep
00e0: 6c 79 5c 73 6d 65 73 73 61 67 65 5c 73 69 6e 5c ly\smessage\sin\
00f0: 73 6d 65 6d 6f 72 79 2e 5c 73 5c 73 54 68 61 74 smemory.\s\sThat
0100: 5c 73 69 6e 76 6f 6c 76 65 73 5c 72 5c 6e 72 65 \sinvolves\r\nre
0110: 61 64 69 6e 67 5c 73 69 6e 5c 73 74 68 65 5c 73 ading\sin\sthe\s
0120: 31 38 4d 42 5c 73 62 6c 6f 62 5c 73 6f 75 74 5c 18MB\sblob\sout\
0130: 73 6f 66 5c 73 74 68 65 5c 73 64 61 74 61 62 61 sof\sthe\sdataba
0140: 73 65 5c 73 61 6e 64 5c 73 64 65 63 6f 6d 70 72 se\sand\sdecompr
0150: 65 73 73 69 6e 67 5c 73 69 74 2c 5c 72 5c 6e 74 essing\sit,\r\nt
0160: 68 65 6e 5c 73 61 70 70 65 6e 64 69 6e 67 5c 73 hen\sappending\s
0170: 74 68 61 74 5c 73 62 6c 6f 62 5c 73 74 6f 5c 73 that\sblob\sto\s
0180: 74 68 65 5c 72 5c 6e 65 6e 64 5c 73 6f 66 5c 73 the\r\nend\sof\s
0190: 74 68 65 5c 73 67 72 6f 77 69 6e 67 5c 73 48 54 the\sgrowing\sHT
01a0: 54 50 5c 73 72 65 70 6c 79 5c 73 28 74 68 65 72 TP\sreply\s(ther
01b0: 65 5c 73 69 73 5c 73 33 36 4d 42 5c 73 66 6f 72 e\sis\s36MB\sfor
01c0: 5c 73 79 6f 75 5c 73 61 6c 72 65 61 64 79 29 5c \syou\salready)\
01d0: 73 74 68 65 6e 5c 73 63 6f 6d 70 72 65 73 73 69 sthen\scompressi
01e0: 6e 67 5c 72 5c 6e 74 68 65 5c 73 65 6e 74 69 72 ng\r\nthe\sentir
01f0: 65 5c 73 48 54 54 50 5c 73 72 65 70 6c 79 5c 73 e\sHTTP\sreply\s
0200: 75 73 69 6e 67 5c 73 5a 2d 6c 69 62 2e 5c 73 5c using\sZ-lib.\s\
0210: 73 41 73 5c 73 74 68 65 5c 73 48 54 54 50 5c 73 sAs\sthe\sHTTP\s
0220: 72 65 70 6c 79 5c 73 62 75 66 66 65 72 5c 73 67 reply\sbuffer\sg
0230: 72 6f 77 73 2c 5c 73 69 74 5c 73 75 73 65 73 5c rows,\sit\suses\
0240: 73 74 68 65 5c 72 5c 6e 74 72 69 63 6b 5c 73 6f sthe\r\ntrick\so
0250: 66 5c 73 72 65 61 6c 6c 6f 63 2d 61 6e 64 2d 63 f\srealloc-and-c
0260: 6f 70 79 5c 73 73 6f 5c 73 67 72 6f 77 69 6e 67 opy\sso\sgrowing
0270: 5c 73 61 5c 73 62 75 66 66 65 72 5c 73 6d 69 67 \sa\sbuffer\smig
0280: 68 74 5c 73 6d 61 6b 65 5c 73 72 65 71 75 69 72 ht\smake\srequir
0290: 65 5c 73 74 77 69 63 65 5c 73 74 68 65 5c 73 73 e\stwice\sthe\ss
02a0: 69 7a 65 5c 72 5c 6e 6f 66 5c 73 74 68 65 5c 73 ize\r\nof\sthe\s
02b0: 62 75 66 66 65 72 2e 5c 73 5c 73 45 76 65 72 79 buffer.\s\sEvery
02c0: 5c 73 63 6f 6d 70 72 65 73 73 2f 75 6e 63 6f 6d \scompress/uncom
02d0: 70 72 65 73 73 5c 73 6f 70 65 72 61 74 69 6f 6e press\soperation
02e0: 5c 73 69 6e 76 6f 6c 76 65 73 5c 73 6b 65 65 70 \sinvolves\skeep
02f0: 69 6e 67 5c 73 62 6f 74 68 5c 72 5c 6e 74 68 65 ing\sboth\r\nthe
0300: 5c 73 6f 72 69 67 69 6e 61 6c 5c 73 61 6e 64 5c \soriginal\sand\
0310: 73 74 68 65 5c 73 6d 6f 64 69 66 69 65 64 5c 73 sthe\smodified\s
0320: 63 6f 70 79 5c 73 69 6e 5c 73 52 41 4d 5c 73 61 copy\sin\sRAM\sa
0330: 74 5c 73 6c 65 61 73 74 5c 73 66 6f 72 5c 73 61 t\sleast\sfor\sa
0340: 5c 73 73 68 6f 72 74 5c 73 77 68 69 6c 65 2e 5c \sshort\swhile.\
0350: 72 5c 6e 41 64 64 5c 73 74 6f 5c 73 74 68 61 74 r\nAdd\sto\sthat
0360: 5c 73 6d 61 6c 6c 6f 63 5c 73 66 72 61 67 6d 65 \smalloc\sfragme
0370: 6e 74 61 74 69 6f 6e 5c 73 61 6e 64 5c 73 74 68 ntation\sand\sth
0380: 65 5c 73 6d 65 6d 6f 72 79 5c 73 73 70 61 63 65 e\smemory\sspace
0390: 5c 73 74 68 61 74 5c 72 5c 6e 53 51 4c 69 74 65 \sthat\r\nSQLite
03a0: 5c 73 77 69 6c 6c 5c 73 72 65 71 75 65 73 74 5c \swill\srequest\
03b0: 73 28 77 65 5c 73 63 6f 6e 66 69 67 75 72 65 5c s(we\sconfigure\
03c0: 73 53 51 4c 69 74 65 5c 73 69 6e 5c 73 66 6f 73 sSQLite\sin\sfos
03d0: 73 69 6c 5c 73 74 6f 5c 73 75 73 65 5c 73 6c 6f sil\sto\suse\slo
03e0: 74 73 5c 73 6f 66 5c 73 6d 65 6d 6f 72 79 5c 72 ts\sof\smemory\r
03f0: 5c 6e 62 65 63 61 75 73 65 5c 73 74 68 61 74 5c \nbecause\sthat\
0400: 73 6d 61 6b 65 73 5c 73 69 74 5c 73 66 61 73 74 smakes\sit\sfast
0410: 65 72 5c 73 61 6e 64 5c 73 62 65 63 61 75 73 65 er\sand\sbecause
0420: 5c 73 66 6f 73 73 69 6c 5c 73 69 73 5c 73 64 65 \sfossil\sis\sde
0430: 73 69 67 6e 65 64 5c 73 74 6f 5c 73 72 75 6e 5c signed\sto\srun\
0440: 73 6f 6e 5c 73 61 5c 73 5c 72 5c 6e 77 6f 72 6b son\sa\s\r\nwork
0450: 73 74 61 74 69 6f 6e 2c 5c 73 6e 6f 74 5c 73 61 station,\snot\sa
0460: 5c 73 63 65 6c 6c 70 68 6f 6e 65 21 29 5c 73 61 \scellphone!)\sa
0470: 6e 64 5c 73 69 74 5c 73 69 73 5c 73 6c 69 74 74 nd\sit\sis\slitt
0480: 6c 65 5c 73 77 6f 6e 64 65 72 5c 73 74 68 61 74 le\swonder\sthat
0490: 5c 73 79 6f 75 5c 72 5c 6e 61 72 65 5c 73 72 75 \syou\r\nare\sru
04a0: 6e 6e 69 6e 67 5c 73 6f 75 74 5c 73 6f 66 5c 73 nning\sout\sof\s
04b0: 52 41 4d 2e 5c 72 5c 6e 5c 72 5c 6e 54 68 65 5c RAM.\r\n\r\nThe\
04c0: 73 6f 62 76 69 6f 75 73 5c 73 73 6f 6c 75 74 69 sobvious\ssoluti
04d0: 6f 6e 5c 73 68 65 72 65 5c 73 69 73 5c 73 74 6f on\shere\sis\sto
04e0: 5c 73 67 65 74 5c 73 6d 6f 72 65 5c 73 52 41 4d \sget\smore\sRAM
04f0: 2e 5c 73 5c 73 54 68 61 74 5c 73 63 61 6e 27 74 .\s\sThat\scan't
0500: 5c 73 62 65 5c 73 68 61 72 64 2e 5c 72 5c 6e 49 \sbe\shard.\r\nI
0510: 5c 73 75 73 65 5c 73 5b 68 74 74 70 3a 2f 2f 77 \suse\s[http://w
0520: 77 77 2e 6c 69 6e 6f 64 65 2e 63 6f 6d 2f 5c 73 ww.linode.com/\s
0530: 7c 5c 73 4c 69 6e 6f 64 65 5d 5c 73 61 73 5c 73 |\sLinode]\sas\s
0540: 6d 79 5c 73 56 50 53 5c 73 70 72 6f 76 69 64 65 my\sVPS\sprovide
0550: 72 5c 73 61 6e 64 5c 73 74 68 65 5c 73 5c 72 5c r\sand\sthe\s\r\
0560: 6e 3c 65 6d 3e 73 6d 61 6c 6c 65 73 74 3c 2f 65 n<em>smallest</e
0570: 6d 3e 5c 73 73 79 73 74 65 6d 5c 73 74 68 65 79 m>\ssystem\sthey
0580: 5c 73 73 65 6c 6c 5c 73 69 73 5c 73 33 36 30 4d \ssell\sis\s360M
0590: 42 2e 5c 72 5c 6e 49 5c 73 61 6c 73 6f 5c 73 75 B.\r\nI\salso\su
05a0: 73 65 5c 73 66 6f 73 73 69 6c 5c 73 6f 6e 5c 73 se\sfossil\son\s
05b0: 5b 68 74 74 70 3a 2f 2f 77 77 77 2e 68 65 2e 6e [http://www.he.n
05c0: 65 74 2f 5c 73 7c 5c 73 48 75 72 72 69 63 61 6e et/\s|\sHurrican
05d0: 65 5c 73 45 6c 65 63 74 72 69 63 5d 2e 5c 73 5c e\sElectric].\s\
05e0: 73 48 45 5c 73 69 73 5c 73 61 5c 72 5c 6e 73 68 sHE\sis\sa\r\nsh
05f0: 61 72 65 64 5c 73 68 6f 73 74 69 6e 67 5c 73 70 ared\shosting\sp
0600: 72 6f 76 69 64 65 72 2c 5c 73 6e 6f 74 5c 73 61 rovider,\snot\sa
0610: 5c 73 56 50 53 5c 73 70 72 6f 76 69 64 65 72 2c \sVPS\sprovider,
0620: 5c 73 62 75 74 5c 73 73 68 61 72 65 64 5c 73 68 \sbut\sshared\sh
0630: 6f 73 74 69 6e 67 5c 73 69 73 5c 73 73 75 66 66 osting\sis\ssuff
0640: 69 63 69 65 6e 74 5c 72 5c 6e 74 6f 5c 73 73 75 icient\r\nto\ssu
0650: 70 70 6f 72 74 5c 73 66 6f 73 73 69 6c 5c 73 61 pport\sfossil\sa
0660: 6e 64 5c 73 79 6f 75 5c 73 64 6f 6e 27 74 5c 73 nd\syou\sdon't\s
0670: 68 61 76 65 5c 73 61 72 62 69 74 72 61 72 79 5c have\sarbitrary\
0680: 73 52 41 4d 5c 73 6c 69 6d 69 74 73 2e 5c 72 5c sRAM\slimits.\r\
0690: 6e 5c 72 5c 6e 43 6f 75 6c 64 5c 73 66 6f 73 73 n\r\nCould\sfoss
06a0: 69 6c 5c 73 62 65 5c 73 72 65 65 6e 67 69 6e 65 il\sbe\sreengine
06b0: 65 72 65 64 5c 73 74 6f 5c 73 73 75 70 70 6f 72 ered\sto\ssuppor
06c0: 74 5c 73 31 38 4d 42 5c 73 62 69 6e 61 72 69 65 t\s18MB\sbinarie
06d0: 73 5c 73 6f 6e 5c 73 61 5c 73 36 34 4d 42 5c 73 s\son\sa\s64MB\s
06e0: 73 65 72 76 65 72 3f 5c 72 5c 6e 50 72 6f 62 61 server?\r\nProba
06f0: 62 6c 79 2e 5c 73 5c 73 42 75 74 5c 73 77 68 79 bly.\s\sBut\swhy
0700: 5c 73 77 6f 75 6c 64 5c 73 79 6f 75 5c 73 77 61 \swould\syou\swa
0710: 6e 74 5c 73 74 6f 3f 5c 73 5c 73 52 41 4d 5c 73 nt\sto?\s\sRAM\s
0720: 69 73 5c 73 63 68 65 61 70 5c 73 61 6e 64 5c 73 is\scheap\sand\s
0730: 67 65 74 74 69 6e 67 5c 73 63 68 65 61 70 65 72 getting\scheaper
0740: 5c 72 5c 6e 64 61 69 6c 79 2e 5c 73 5c 73 46 6f \r\ndaily.\s\sFo
0750: 73 73 69 6c 5c 73 64 6f 65 73 5c 73 6e 6f 74 5c ssil\sdoes\snot\
0760: 73 75 73 65 5c 73 74 68 61 74 5c 73 6d 75 63 68 suse\sthat\smuch
0770: 5c 73 6d 65 6d 6f 72 79 5c 73 72 65 6c 61 74 69 \smemory\srelati
0780: 76 65 5c 73 74 6f 5c 73 74 68 65 5c 73 73 69 7a ve\sto\sthe\ssiz
0790: 65 5c 73 6f 66 5c 72 5c 6e 74 68 65 5c 73 66 69 e\sof\r\nthe\sfi
07a0: 6c 65 73 5c 73 69 74 5c 73 73 74 6f 72 65 73 5c les\sit\sstores\
07b0: 73 2d 5c 73 70 65 72 68 61 70 73 5c 73 61 5c 73 s-\sperhaps\sa\s
07c0: 6d 75 6c 74 69 70 6c 69 65 72 5c 73 6f 66 5c 73 multiplier\sof\s
07d0: 33 5c 73 6f 72 5c 73 34 2c 5c 73 62 75 74 5c 73 3\sor\s4,\sbut\s
07e0: 74 68 61 74 5c 73 69 73 5c 73 6e 6f 74 5c 73 73 that\sis\snot\ss
07f0: 6f 5c 72 5c 6e 6d 75 63 68 5c 73 69 6e 5c 73 74 o\r\nmuch\sin\st
0800: 68 65 5c 73 67 72 61 6e 64 5c 73 73 63 68 65 6d he\sgrand\sschem
0810: 65 5c 73 6f 66 5c 73 74 68 69 6e 67 73 2e 5c 73 e\sof\sthings.\s
0820: 5c 73 54 68 69 73 5c 73 70 72 6f 62 6c 65 6d 5c \sThis\sproblem\
0830: 73 68 61 73 5c 73 61 5c 73 76 65 72 79 5c 73 73 shas\sa\svery\ss
0840: 69 6d 70 6c 65 5c 73 73 6f 6c 75 74 69 6f 6e 3a imple\ssolution:
0850: 5c 72 5c 6e 74 68 72 6f 77 5c 73 6d 65 6d 6f 72 \r\nthrow\smemor
0860: 79 5c 73 61 74 5c 73 69 74 5c 73 61 6e 64 5c 73 y\sat\sit\sand\s
0870: 6d 6f 76 65 5c 73 6f 6e 2e 0a 4a 20 72 65 73 6f move\son..J reso
0880: 6c 75 74 69 6f 6e 20 4e 6f 74 5f 41 5f 42 75 67 lution Not_A_Bug
0890: 0a 4a 20 73 74 61 74 75 73 20 43 6c 6f 73 65 64 .J status Closed
08a0: 0a 4b 20 36 37 38 65 62 30 63 32 30 61 30 37 66 .K 678eb0c20a07f
08b0: 36 30 31 61 61 32 62 31 31 34 33 39 62 37 61 63 601aa2b11439b7ac
08c0: 34 39 65 63 61 66 32 31 65 35 63 0a 55 20 64 72 49ecaf21e5c.U dr
08d0: 68 0a 5a 20 31 64 39 62 36 37 61 30 34 64 35 32 h.Z 1d9b67a04d52
08e0: 66 33 36 33 35 39 63 63 32 35 39 35 39 62 65 30 f36359cc25959be0
08f0: 32 38 30 62 0a 280b.