~ubuntu-branches/ubuntu/trusty/drizzle/trusty

« back to all changes in this revision

Viewing changes to plugin/pbxt/TODO

  • Committer: Bazaar Package Importer
  • Author(s): Monty Taylor
  • Date: 2010-10-02 14:17:48 UTC
  • mfrom: (1.1.1 upstream)
  • mto: (2.1.17 sid)
  • mto: This revision was merged to the branch mainline in revision 3.
  • Revision ID: james.westby@ubuntu.com-20101002141748-m6vbfbfjhrw1153e
Tags: 2010.09.1802-1
* New upstream release.
* Removed pid-file argument hack.
* Updated GPL-2 address to be new address.
* Directly copy in drizzledump.1 since debian doesn't have sphinx 1.0 yet.
* Link to jquery from libjs-jquery. Add it as a depend.
* Add drizzled.8 symlink to the install files.

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
PBXT To-Do List
 
2
===============
 
3
 
 
4
My thanks to all who have downloaded and tested PBXT. If an issue you reported before the date below is not on this list, please e-mail me again. 
 
5
 
 
6
------- 2008-12-09
 
7
 
 
8
0063: The option for not using memory mapped files must be fixed.
 
9
 
 
10
0062: Dynamic option for using memory mapping on a table (Dimitri).
 
11
 
 
12
------- 2008-09-12
 
13
 
 
14
0061: Add records per key result to ha_pbxt:info() call (Mark).
 
15
 
 
16
------- 2008-08-31
 
17
 
 
18
0060: Add table option to determine if a table should be memory mapped or not (also requested by Dimitri).
 
19
 
 
20
0059: Add table options:
 
21
  AVG_ROW_LENGTH [=] value
 
22
  DATA DIRECTORY [=] 'absolute path to directory'
 
23
  INDEX DIRECTORY [=] 'absolute path to directory'
 
24
  MAX_ROWS [=] value
 
25
 
 
26
------- 2008-03-28
 
27
 
 
28
0058: Consolidate writes when changes in the log are applied to the database.
 
29
 
 
30
------- 2008-03-07
 
31
 
 
32
0057: Cluster updates onto a single page.
 
33
 
 
34
0056: Add checksum to index and data pages.
 
35
 
 
36
0055: When no index cache is available, the complete index must be flushed (not just single pages).
 
37
 
 
38
0054: Optimize indexes by not creating indexes that are a complete sub-set of some other index. In this case we must be able to identify part of an index as unique. For example: primary key (a, b), index (a, b, c). Here we would just create index (a, b, c), and specify that the part (a, b) must be unique. Operations on (a, b) will be directed to index (a, b, c).
 
39
 
 
40
0053: Check and test lock tables.
 
41
 
 
42
0052: Cache data log data in the handle data cache. Must be purged when a handle data record is written.
 
43
 
 
44
0051: Write data log data alternatively to the transaction log. The compactor must then compact transaction logs.
 
45
 
 
46
0050: [RESOLVED: RN126] Implement consistent write for indexes.
 
47
 
 
48
0049: [RESOLVED: RN114] Set the index block size to 4K, or 16K as used by InnoDB.
 
49
 
 
50
0048: [RESOLVED: RN110] Add row ID to indexes. This should only be set once the row is cleaned by the sweeper. Then the row ID can be used to make a quite check if the row is the most recent version.
 
51
 
 
52
------- 2007-06-19
 
53
 
 
54
0047: Test build with ./configure --with-innodb under Linux (Vadim).
 
55
 
 
56
0046: [RESOLVED: RN85] Add plug.in file to enable drop in compile under Linux.
 
57
 
 
58
0045: Provide libstdc++.so.6 binaries (Vadim).
 
59
 
 
60
0044: [RESOLVED: RN73] Limit number of file handles used per table (Brian).
 
61
 
 
62
0043: XA (two-phase commit) support (Peter).
 
63
 
 
64
------- 2007-03-13
 
65
 
 
66
0042: [RESOLVED: RN108] Implemement STATUS commands.
 
67
 
 
68
0041: Implement index prefix compression.
 
69
 
 
70
------- 2007-03-07
 
71
 
 
72
0040: [RESOLVED: RN60] Update in-place when a transaction updates the same record more than once.
 
73
 
 
74
0039: Set the number and size of the segments dynamically according to the amount of memory in the cache (and the number of CPUs?) (as discussed with: Peter & Vadim).
 
75
 
 
76
0038: [RESOLVED: RN133] Improve the efficiency of the locks by using atomic compare and swap (Peter & Vadim).
 
77
 
 
78
0037: [RESOLVED: RN133] Instead of a global LRU list, use a LRU list for segment of the cache (Peter & Vadim). [ Note: a global list using a TAS lock and change time (so that LRU is not always updated) is most efficient].
 
79
 
 
80
0036: Add support for deferred foreign key checking (requested by: Mark).
 
81
 
 
82
0035: [RESOLVED: RN71] Remove the 2000 table limit (reported by: Hakan).
 
83
 
 
84
------- 2007-02-28
 
85
 
 
86
0035: [RESOLVED: RN74, RN107] Build in the PBXT system parameters (currently they must be set using environment variables.
 
87
 
 
88
0034: [RESOLVED: RN117] Initial documentation (yes, it must be done!)
 
89
 
 
90
0033: Make the error code returned on lock error configurable.
 
91
 
 
92
0032: [RESOLVED: RN65] Create a source code pluggable version for Windows.
 
93
 
 
94
0031: [RESOLVED: RN66] PBXT corrupts the index file when the size exceeds 4 GB (reported by: Luciano)
 
95
 
 
96
0030: [RESOLVED: RN102] Implement pbxt_index_flush_delay. Postpones index writing in order to speed up imports. [Resolution uses that fact hat index entries that are missing are added during recovery. As a result, index flushing can be delayed.]
 
97
 
 
98
0029: [RESOLVED: RN103] Implement SELECT ... FOR UPDATE (recommended by: Robin).
 
99
 
 
100
------- 2007-02-14
 
101
 
 
102
0028: Implement CREATE TABLE ... DATA/INDEX DIRECTORY (suggested by: Robin).
 
103
 
 
104
------- 2006-12-06
 
105
 
 
106
0027: [RESOLVED: RN53] Bug in pbxt with query caching (reported by: Giuseppe) caused violation of transaction isolation.
 
107
 
 
108
------- 2006-08-05
 
109
 
 
110
0026: Implement BACKUP and RESTORE table (planned for the first post release version).
 
111
 
 
112
0025: Implement DISABLE/ENABLE KEYS. Works for FOREIGN KEYs, currently no plans to implement for disabling indexes.
 
113
 
 
114
0024: Implement ANALYZE TABLE (planned for the first post release version).
 
115
 
 
116
0023: Implement CHECK TABLE (planned for the first release candidate).
 
117
 
 
118
0022: [RESOLVED: RN18] Implement TRUNCATE TABLE and DELETE FROM <table>; (i.e. a DELETE without WHERE clause). Currently this function does not cause an error, but no rows are deleted.
 
119
 
 
120
------- 2006-07-06
 
121
 
 
122
0021: [RESOLVED: RN28] .../mysql-test/mysql-test-run --force --mysqld=--default-storage-engine=pbxt produces a number of errors (reported by: Hakan): As far as I can tell some failures are unnessary but others are bugs. All need to be checked.
 
123
 
 
124
------- 2006-07-03
 
125
 
 
126
0020: [RESOLVED: RN49] Implement referential integrity (planned for the first release candidate).
 
127
 
 
128
------- 2006-04-01
 
129
 
 
130
0019: [RESOLVED: RN28] mysql-test-run hangs on alter table (reported by: Hakan): Running a test like ./mysql-test-run.pl --mysqld=--default-storage-engine=pbxt, hangs on ALTER TABLE.
 
131
 
 
132
0018: Implement GEOMETRY date type. Note: There are currently no plans to implement this feature.
 
133
 
 
134
------- 2006-03-31
 
135
 
 
136
0017: [RESOLVED: RN37] MySQL 5.x Version (reported by: Ronald, Giuseppe).
 
137
 
 
138
0016: [RESOLVED: RN13] Hang on "DROP DATABASE" (reported by: Giuseppe). Load the world database (http://downloads.mysql.com/docs/world.sql) and convert all tables into PBXT. Then, the drop database command hangs.
 
139
 
 
140
0015: [RESOLVED: RN12] Implement isolation level "repeatable read" (reported by: Giuseppe). Current PBXT only supports isolation level "committed read". This means committed data can be seen no matter when it was committed. Use SELECT ... FOR UPDATE to guarantee repeatable read, on data already read.
 
141
 
 
142
0014: [RESOLVED: RN7] Two transactions cannot insert simaltaneously if they use auto_increment (reported by: Giuseppe). See also 0005.
 
143
 
 
144
0013: [RESOLVED: RN11] Implement buffered write (reported by: Giuseppe): Lack of buffered write leads to bad performance in operations such as ALTER TABLE ENGINE = PBXT and INSERT ... SELECT.
 
145
 
 
146
0012: [RESOLVED: RN18] TRUNCATE does not work (reported by: Giuseppe)
 
147
 
 
148
0011: [RESOLVED: RN2] Load Sakila Sample Database (reported by: Ronald): ALTER TABLE film ENGINE=PBXT; fails
 
149
 
 
150
0010: [RESOLVED: RN6] sql-bench (reported by: Dmitry): ./run-all-tests --create-options=TYPE=PBXT fails.
 
151
 
 
152
0009: [RESOLVED: RN29] 64-bit Linux (reported by: Hakan): PBXT current does not compile under 64-bit Linux.
 
153
 
 
154
------- 2006-03-16 
 
155
 
 
156
0008: [RESOLVED: RN10] Enforcing the unique index constraint:
 
157
 
 
158
An index declared as "unique" must return a "duplicate unique key" error when inserting a duplicate value. The difficulty part of implementing this in PBXT is that we may encounter a duplicate value that has not yet been committed. The index reading thread must then wait for the transaction to commit or abort.
 
159
 
 
160
0007: [RESOLVED: RN9] Cleaning up empty index nodes:
 
161
 
 
162
The Lehman and Yoa algorithm used for indexing does not describe a way of cleaning up empty index nodes on-the-fly. A search of the relevant literature for an algorithm also turns up empty handed (periodic "reorg" is mostly suggested). I have subsequently devised an algorithm that will do the job. This needs to be implemented.
 
163
 
 
164
0006: [RESOLVED: RN8] Cache Balancing:
 
165
 
 
166
PBXT uses a number of small caches in order to improve concurrency (rather than one large cache). A process is required to manage the amount of cache memory used as a whole. The process must distribute the overall amount of memory available for caching over the small caches, according to demand.
 
167
 
 
168
0005: [RESOLVED: RN7] Implement a faster auto-increment method
 
169
 
 
170
Currently the auto-increment is handled by the default method used in MySQL. This is done by performing a "fetch-last" on the index for each insert to find the highest key value. This works well unless there are large number empty index nodes due to the problem described in (2) above.
 
171
 
 
172
PBXT Testing To-Do List
 
173
 
 
174
This is my first take on what still must be tested. My thanks to Ronald Bradford who is working on a generic testing framework that can be used to test PBXT.
 
175
 
 
176
0004: [RESOLVED: RN6, RN28] MySQL Tests:
 
177
 
 
178
Several tests (for mysql-test-run) written for other engines can be adapted and used to test PBXT.
 
179
 
 
180
0003: [RESOLVED: RN30] Multi-processor Test:
 
181
 
 
182
There is a difference between preemptive multitasking and true multitasking, which you have on a multi-processor (or dual core) machine. I don't expect any fundamental problems here, but it must be tested.
 
183
 
 
184
0002: [RESOLVED: RN5, RN30, RN43] Multi-user/locking Test:
 
185
 
 
186
How does the engine perform with a number of concurrent users running various transactions on a number of different tables?
 
187
This is a difficult test to write because it need to simulate a production situation. To test at least 2 or 3 machines is required. The idea is not to use too much data so that a lot of conflicts may occur.
 
188
 
 
189
0001: [RESOLVED: RN4, RN43] Load/Stability Test:
 
190
 
 
191
How does the engine perform under heavy load over a long period of time? How stable is the engine on power outage, etc?
 
192
 
 
193
The test could use a variation of the test program written for test (3) above. At least 3 test machines would be required. The test must be modified to cause as much activity as possible. The test should monitor the performance under load.
 
194
 
 
195