A method for improving the performance of a system having a main-memory
database which has at least one database containing at least one data
item, and having a permanent storage device. The system executes at least
one update transaction for modifying the data item to produce update
results, and at least one read transaction for reading the data item. The
method includes the steps of requiring the update transaction to acquire a
database mutex before the update transaction modifies the data item. A
timestamp is assigned to the update transaction and to the data item to be
updated by the update transaction. After the update transactions updates
the data item and before it release the database mutex, the update
transaction acquire a mutex associated with the timestamp. Before the
update's results are stored to the permanent storage device, the update
transaction releases the database mutex. Finally, the update transaction
releases the mutex associated with the timestamp after the update's
results are stored to the permanent storage device. Before a read
transaction is allowed to read the data item, the read transaction must
acquire the database mutex. To ensure that the read transaction read data
that was committed by the predecessor update transaction, the read
transaction must acquire and release the mutex associated with the
timestamp before the read transaction terminates.
Um método para melhorar o desempenho de um sistema que tem uma base de dados main-memory que tenha ao menos uma base de dados conter ao menos um artigo de dados, e tendo um dispositivo de armazenamento permanente. O sistema executa ao menos uma transação do update para modificar o artigo de dados para produzir resultados do update, e ao menos se leu a transação para ler o artigo de dados. O método inclui as etapas de reque a transação do update adquirir um mutex da base de dados antes que a transação do update modifique o artigo de dados. Um timestamp é atribuído à transação do update e ao artigo de dados a ser atualizado pela transação do update. Depois que as transações do update atualizam o artigo de dados e antes que ele liberação o mutex da base de dados, a transação do update adquire um mutex associou com o timestamp. Antes que os resultados do update estejam armazenados ao dispositivo de armazenamento permanente, a transação do update libera o mutex da base de dados. Finalmente, a transação do update libera o mutex associado com o timestamp depois que os resultados do update são armazenados ao dispositivo de armazenamento permanente. Antes que uma transação lida esteja permitida ler o artigo de dados, a transação lida deve adquirir o mutex da base de dados. Para assegurar-se de que os dados lidos lidos da transação que foram cometidos pela transação do update do predecessor, a transação lida devam adquirir e liberar o mutex associado com o timestamp antes que a transação lida terminar.