A server that responds to requests from clients which require data from the databases that it administers. Such servers have a number of functions. First, they interpret queries expressed in the Structured Query Language programming language sent to it by a client, execute them, and send back the results. Second, they prevent the errors that occur when one user concurrently accesses data which is being accessed by another user. Third, they optimize queries. An SQL query can be executed in a number of ways and the difference in response time can be very large. A good database server examines an SQL query and works out an execution plan which minimizes execution time. Fourth, they administer security. A good database server ensures that no user is allowed access to a database without authorization. Fifth, they administer backup and recovery procedures. A database server keeps a log of transactions, which is used to recover a database when some large problem occurs such as a gross system failure. This log keeps details of the transactions against databases and the parts of each database that were affected. When a problem occurs the recovery facility of the server finds a copy of the last saved database and then reapplies all the transactions held in the backup log.