| Introduction |
Mini SQL 3.0 is the third generation of the mSQL database system. The
development of this generation of the product has been aimed at widening
the potential application of the software. Depending on one's point of
view, mSQL 2.x could have been viewed as either too small (for
multi-million entry databases requiring simultaneous query execution) or
too large (for embedded systems). This release provides configurable
features that will allow it to be used in large enterprise environments,
embedded systems, and everything else in between.
To cater for the widest range of applications, two version of the database server are provided: a single process server called msql3d, and a multi-process server called msql3_broker. msql3d is similar in concept to the server provided with the mSQL 2.x release. The new msql3_broker backend (or broker based server) allows a group of processes to be configured to simultaneously handle queries coming from multiple clients. By tuning the size of the process pool, the number of queries that can be processed simultaneously can be set. New features common to both the servers include extensions to the range of SQL statements supported, more efficient CPU and memory utilisation, an enhanced query optimiser allowing much greater use of indicies, and a more reliable module based structure to the underlying server code. |
|
![]() | ||
|
Single Process and Multi-Process Servers |
This generation of mSQL includes two version of the server: a single process and a multi-process (broker based) server. The single process server is called msql3d and is similar in design to the 2.x server. The new broker based server, called msql3_broker, uses a process farm model that allows multiple queries to be executed simultaneously. The number of backend process (in addition to the actual broker process) is controlled by the new Num_Children configuration file item. Each back-end process is capable of simultaneously executing a client's query. | |
![]() | ||
|
Enhanced Indexing |
The query optimiser has been enhanced for the 3.0 release. It now supports index ranging as well as index equality testing. As a result, conditions that use "<" ">" or "BETWEEN" will now result in an indexed access to the data table rather than a sequential scan. | |
![]() | ||
|
Data Types |
Further data types have been added. The new types are listed below. int8, int16, int32, int64 8, 16, 32 and 64 bit integers uint8, uint16, uint32, uint64 8, 16, 32 and 64 bit unsigned integers ipv4, ipaddr An internet address (version 4 only) | |
![]() | ||
|
Function |
3.0 includes support for value functions in SELECT queries. The
functions currently available for manipulating character values include
upper ( ), lower( ), length( ), substr( ), chop( ), translate( ),
replace( ), soundex( )
Numeric values can be manipulated using the following functions abs( ), ceil( ), floor( ), mod( ), sign( ), power( ) | |
![]() | ||
|
Regular Expressions |
Regular expression conditions (LIKE etc) can now be applied to TEXT fields. Previously, regular expression testing could only be performed on fixed length character fields (CHAR) not variable length character fields (TEXT). | |
![]() | ||
|
Tunable Memory Use |
Runtime configuration items have been added to control two of the main
areas of memory use: the table cache and the internal sorting buffer.
mSQL 2.x had an internal, hard coded size of 8 entries for the table
cache. Each entry consumes both memory and file descriptor resources.
The size of the table cache is now dynamic and can be set using the
Table_Cache item of the configuration file.
The configuration file now also offers a Sort_Max_Mem item that defines the largest amount of memory that the server is allowed to use during the processing of an ORDER or DISTINCT clause. If the operation will consume more memory than the defined limit an alternate algorithm is used. | |
![]() | ||
|
Higher Performance |
An extensive audit of the server software has been undertaken with the aim of increasing both reliability and performance. Both goals have been achieved. The single process server included with mSQL 3.x executes standard benchmark tests 30faster than the server distributed in the mSQL 2.0.12 release. On systems and applications that can benefit from executing multiple queries simultaneously, the broker based server will produce even greater performance increases in terms of user response times. |