Documentation Source Text

Check-in [2ca5036003]
Login

Many hyperlinks are disabled.
Use anonymous login to enable hyperlinks.

Overview
Comment:Add news for 3.17.0. Set the dates and check-in hash for 3.17.0.
Timelines: family | ancestors | descendants | both | trunk
Files: files | file ages | folders
SHA1: 2ca5036003f4adc6ea342fccfe206a50a16bd52d
User & Date: drh 2017-02-10 17:56:43
Context
2017-02-13
11:53
Update sessionintro.in to reflect the support for WITHOUT ROWID tables in the sessions module. check-in: c6eb84e1aa user: dan tags: trunk
2017-02-10
17:56
Add news for 3.17.0. Set the dates and check-in hash for 3.17.0. check-in: 2ca5036003 user: drh tags: trunk
2017-02-09
19:48
Final adjustments to the change log before starting release tests. check-in: b6f0b02c8c user: drh tags: trunk
Changes
Hide Diffs Unified Diffs Ignore Whitespace Patch

Changes to pages/changes.in.

17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
proc chng {date desc {options {}}} {
  global nChng aChng xrefChng
  set aChng($nChng) [list $date $desc $options]
  set xrefChng($date) $nChng
  incr nChng
}

chng {2017-03-00 (3.17.0)} {
<li>Approximately 25% better performance from the [R-Tree extension].
    <ul>
    <li> Uses compiler built-ins (ex: __builtin_bswap32() or _byteswap_ulong())
         for byteswapping when available.
    <li> Uses the [sqlite3_blob] key/value access object instead of SQL
         for pull content out of R-Tree nodes
    <li> Other miscellaneous enhancements such as loop unrolling.
    </ul>
<li>Add the [SQLITE_DEFAULT_LOOKASIDE] compile-time option.
<li>Increase the default [lookaside memory allocator|lookaside]
    size from 512,125 to 1200,100 
    as this provides better performance while only adding 56KB 
    of extra memory per connection.  Memory-sensitive 







|





|







17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
proc chng {date desc {options {}}} {
  global nChng aChng xrefChng
  set aChng($nChng) [list $date $desc $options]
  set xrefChng($date) $nChng
  incr nChng
}

chng {2017-02-10 (3.17.0)} {
<li>Approximately 25% better performance from the [R-Tree extension].
    <ul>
    <li> Uses compiler built-ins (ex: __builtin_bswap32() or _byteswap_ulong())
         for byteswapping when available.
    <li> Uses the [sqlite3_blob] key/value access object instead of SQL
         for pulling content out of R-Tree nodes
    <li> Other miscellaneous enhancements such as loop unrolling.
    </ul>
<li>Add the [SQLITE_DEFAULT_LOOKASIDE] compile-time option.
<li>Increase the default [lookaside memory allocator|lookaside]
    size from 512,125 to 1200,100 
    as this provides better performance while only adding 56KB 
    of extra memory per connection.  Memory-sensitive 

Changes to pages/chronology.in.

24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
#    ORDER BY mtime DESC;
#
# A small amount of manual editing and de-duplication followed.
#
# Manually edit the list for each subsequent release.
#      
foreach line [split {
xxxxxxxxxx|pending|version 3.17.0
a65a62893c|2016-01-06|version 3.16.2
979f043928|2016-01-03|Version 3.16.1
04ac0b75b1|2017-01-02|Version 3.16.0
bbd85d235f|2016-11-28|Version 3.15.2
1136863c76|2016-11-04|Version 3.15.1
707875582f|2016-10-14|Version 3.15.0
29dbef4b85|2016-09-12|Version 3.14.2
a12d805977|2016-08-11|Version 3.14.1
d5e9805702|2016-08-08|Version 3.14







|
|
|







24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
#    ORDER BY mtime DESC;
#
# A small amount of manual editing and de-duplication followed.
#
# Manually edit the list for each subsequent release.
#      
foreach line [split {
ad867e8701|2017-02-10|version 3.17.0
a65a62893c|2017-01-06|version 3.16.2
979f043928|2017-01-03|Version 3.16.1
04ac0b75b1|2017-01-02|Version 3.16.0
bbd85d235f|2016-11-28|Version 3.15.2
1136863c76|2016-11-04|Version 3.15.1
707875582f|2016-10-14|Version 3.15.0
29dbef4b85|2016-09-12|Version 3.14.2
a12d805977|2016-08-11|Version 3.14.1
d5e9805702|2016-08-08|Version 3.14

Changes to pages/malloc.in.

543
544
545
546
547
548
549
550

551
552
553
554
555
556
557
...
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
...
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
is the size of each page-cache allocation.  N is the maximum 
number of available allocations.</p>

<p>If SQLite needs a page-cache entry that is larger than "sz" bytes or
if it needs more than N entries, it falls back to using the
general-purpose memory allocator.</p>

<tcl>hd_fragment lookaside {lookaside memory allocator}</tcl>

<h2> Lookaside memory allocator</h2>

<p>SQLite [database connections] make many
small and short-lived memory allocations.
This occurs most commonly when compiling SQL statements using
[sqlite3_prepare_v2()] but also to a lesser extent when running
[prepared statements] using [sqlite3_step()].  These small memory
................................................................................
running in a single thread (there are mutexes already in
place to enforce this) so no additional mutexing is required to 
serialize access to the lookaside slot freelist.
Consequently, lookaside memory
allocations and deallocations are very fast.  In speed tests on
Linux and Mac OS X workstations, SQLite has shown overall performance
improvements as high as 10% and 15%, depending on the workload how
lookaside is configured.</p>

<p>The size of the lookaside memory pool has a global default value
but can also be configured on a connection-by-connection basis.
To change the default size of the lookaside memory pool at
compile-time, use the 
[SQLITE_DEFAULT_LOOKASIDE|-DSQLITE_DEFAULT_LOOKASIDE=<i>SZ,N</i>]
option.
................................................................................
start-time, use the [sqlite3_config()] interface:</p>

<blockquote><pre>
[sqlite3_config]([SQLITE_CONFIG_LOOKASIDE], sz, cnt);
</pre></blockquote>

<p>The "sz" parameter is the size in bytes of each lookaside slot.
The default is 100 bytes.  The "cnt" parameter is
the total number of lookaside memory slots per database connection.
The default value is 500 slots. The total amount
of lookaside memory allocated to each [database connection] is
sz*cnt bytes.  Hence the lookaside memory pool allocated per database 
connection is 50 kilobytes by default.
(Note: these default values are for SQLite [version 3.6.1] and are subject
to changes in future releases.)
</p>

<p>The lookaside pool can be changed for an individual
[database connection] "db" using this call:</p>

<blockquote><pre>
[sqlite3_db_config](db, [SQLITE_DBCONFIG_LOOKASIDE], pBuf, sz, cnt);







|
>







 







|







 







|

|

|
<
<
<







543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
...
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
...
607
608
609
610
611
612
613
614
615
616
617
618



619
620
621
622
623
624
625
is the size of each page-cache allocation.  N is the maximum 
number of available allocations.</p>

<p>If SQLite needs a page-cache entry that is larger than "sz" bytes or
if it needs more than N entries, it falls back to using the
general-purpose memory allocator.</p>

<tcl>hd_fragment lookaside {lookaside memory allocator} \
   {lookaside buffer} {lookaside memory} {lookaside}</tcl>
<h2> Lookaside memory allocator</h2>

<p>SQLite [database connections] make many
small and short-lived memory allocations.
This occurs most commonly when compiling SQL statements using
[sqlite3_prepare_v2()] but also to a lesser extent when running
[prepared statements] using [sqlite3_step()].  These small memory
................................................................................
running in a single thread (there are mutexes already in
place to enforce this) so no additional mutexing is required to 
serialize access to the lookaside slot freelist.
Consequently, lookaside memory
allocations and deallocations are very fast.  In speed tests on
Linux and Mac OS X workstations, SQLite has shown overall performance
improvements as high as 10% and 15%, depending on the workload how
and lookaside is configured.</p>

<p>The size of the lookaside memory pool has a global default value
but can also be configured on a connection-by-connection basis.
To change the default size of the lookaside memory pool at
compile-time, use the 
[SQLITE_DEFAULT_LOOKASIDE|-DSQLITE_DEFAULT_LOOKASIDE=<i>SZ,N</i>]
option.
................................................................................
start-time, use the [sqlite3_config()] interface:</p>

<blockquote><pre>
[sqlite3_config]([SQLITE_CONFIG_LOOKASIDE], sz, cnt);
</pre></blockquote>

<p>The "sz" parameter is the size in bytes of each lookaside slot.
The "cnt" parameter is
the total number of lookaside memory slots per database connection.
The total amount
of lookaside memory allocated to each [database connection] is
sz*cnt bytes. 



</p>

<p>The lookaside pool can be changed for an individual
[database connection] "db" using this call:</p>

<blockquote><pre>
[sqlite3_db_config](db, [SQLITE_DBCONFIG_LOOKASIDE], pBuf, sz, cnt);

Changes to pages/news.in.

14
15
16
17
18
19
20




















21
22
23
24
25
26
27
  hd_puts "<h3>$date - $title</h3>"
  regsub -all "\n( *\n)+" $text "</p>\n\n<p>" txt
  regsub -all {[Tt]icket #(\d+)} $txt \
      {<a href="http://www.sqlite.org/cvstrac/tktview?tn=\1">\0</a>} txt
  hd_resolve "<blockquote>$txt</blockquote>"
  hd_puts "<hr width=\"50%\">"
}





















newsitem {2017-01-06} {Release 3.16.2} {
One of the performance optimizations added in 3.16.0 caused triggers
and foreign keys to malfunction for the [REPLACE] statement on
[WITHOUT ROWID] tables that lack secondary indexes.  This patch
release fixes the problem.  See ticket 
[https://www.sqlite.org/src/info/30027b613b4|30027b613b4] for details.







>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>







14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
  hd_puts "<h3>$date - $title</h3>"
  regsub -all "\n( *\n)+" $text "</p>\n\n<p>" txt
  regsub -all {[Tt]icket #(\d+)} $txt \
      {<a href="http://www.sqlite.org/cvstrac/tktview?tn=\1">\0</a>} txt
  hd_resolve "<blockquote>$txt</blockquote>"
  hd_puts "<hr width=\"50%\">"
}

newsitem {2017-02-10} {Release 3.17.0} {
SQLite [version 3.17.0] is a regularly scheduled maintenance release.
<p>
Most of the changes in this release are performance optimizations.
Optimizations to the [R-Tree extension] are especially noticeable.
<p>
In this release, the default size of the 
[lookside buffer] allocated for each database connection
is increased from 64,000 to 120,000 bytes.  This provides improved
performance on many common workloads in exchange for a small increase
in memory usage.
Applications that value a small memory footprint over raw speed
can change the lookaside buffer size back to its old value (or to zero)
using the [SQLITE_DEFAULT_LOOKASIDE] compile-time option, or the
[SQLITE_CONFIG_LOOKASIDE|sqlite3_config(SQLITE_CONFIG_LOOKASIDE)]
start-time setting, or the
[SQLITE_DBCONFIG_LOOKASIDE|sqlite3_db_config(SQLITE_DBCONFIG_LOOKASIDE)]
run-time setting.
}

newsitem {2017-01-06} {Release 3.16.2} {
One of the performance optimizations added in 3.16.0 caused triggers
and foreign keys to malfunction for the [REPLACE] statement on
[WITHOUT ROWID] tables that lack secondary indexes.  This patch
release fixes the problem.  See ticket 
[https://www.sqlite.org/src/info/30027b613b4|30027b613b4] for details.