Using direct memory access for performing database operations between two or more machines
AssigneeOracle International Corporation
InventorsDebashis Saha, John Ciminski, Debashish Chatterjee, Lakshminarayan Chidambaran
Life of this patent
Estimating the term…
Abstract
Direct memory accessed is used to perform database operations between two or more machines. A first segment of memory is allocated for a second machine, where at least one of the first machine and second machine is a database server. During performance of a database operation that involves the transfer of data from the second machine to the first machine, data in the first segment of memory is buffered in response to the second machine writing the data to a second segment of memory on the second machine.
Claims68
A method for performing database operations, the method comprising performing the following steps on a first machine:
- allocating a first segment of memory for exchanging data with a second machine using the direct memory access enabled channel, wherein at least one of the first machine and the second machine is a database server,
- wherein allocating the first segment of memory includes identifying a plurality of buffers to be used for exchanging data with the second machine;
- verifying that the first machine and the second machine can communicate using the direct memory access enabled channel;
- in response to determining that the first machine and the second machine can communicate using the direct memory access enabled channel, performing:
- during performance of a database operation that involves a transfer of data from the second machine to the first machine, buffering a portion of said data in the first segment of memory in response to the second machine writing said portion of data to a second segment of memory on the second machine, and
- wherein buffering said portion of said data in the first segment of memory includes (a) buffering said portion of the data received from the second machine in one or more buffers of the plurality of buffers, and (b) sending, to the second machine, an acknowledgment upon each buffer, of the plurality of buffers, becoming available to receive additional data from the second machine;
- and
- in response to determining that either the first machine or the second machine cannot use the direct memory access enabled channel, using an Internet Protocol enabled channel instead of the direct memory access enabled channel to receive, at said first machine, said data from the second machine to the second machine,
- wherein verifying that the first machine and the second machine can communicate using the direct memory access enabled channel comprises at least one of the following steps:
- sending a test message to the second machine over the direct memory access enabled channel,
- causing the second machine to send a test message to the first machine over the direct memory access enabled channel, and
- comparing information about resources on the second machine for using the direct memory access enabled channel with resources on the first machine for using the direct memory access enabled channel.
A method for performing database operations, the method comprising performing the following steps on a first machine:
- allocating a first segment of memory for exchanging data with the second machine using the direct memory access enabled channel, wherein at least one of the first machine and second machine is a database server,
- wherein allocating a first segment of memory includes identifying a first plurality of buffers, wherein each buffer in the first plurality of buffers coffesponds to a buffer in a second plurality of buffers on the second machine;
- verifying that the first machine and a second machine can communicate using a direct memory access enabled channel;
- in response to determining that the first machine and the second machine can communicate using the direct memory access enabled channel, performing:
- during performance of a database operation that involves a transfer of data from the first machine to the second machine, writing a portion of said data to said first segment of memory in order to cause said portion of said data to be buffered in a second segment of memory, wherein the second segment of memory is allocated on the second machine for exchanging data with the first machine,
- wherein writing said portion of said data to said first segment of memory in order to cause said portion of said data to be buffered in a second segment of memory includes using the first plurality of buffers to send said portion of the data to one or more buffers in the second plurality of buffers;
- and
- in response to determining that either the first machine or the second machine cannot use the direct memory access enabled channel, the first machine sending, to the second machine, said data using an Internet Protocol (IP) enabled channeL
- wherein verifying that the first machine and the second machine can communicate using the direct memory access enabled channel comprises at least one of the following steps:
- sending a test message to the second machine over the direct memory access enabled channel,
- causing the second machine to send a test message to the first machine over the direct memory access enabled channel, and
- comparing information about resources on the second machine for using the direct memory access enabled channel with resources on the first machine for using the direct memory access enabled channel.
A method for performing database operations, the method comprising performing the following steps on a first machine:
- allocating a first segment of memory for receiving data from a second machine using the direct memory access enabled channel,
- wherein allocating a first segment of memory includes identifying a plurality of buffers to be used for exchanging data with the second machine;
- verifying that the first machine and the second machine can communicate using a direct memory access enabled channel;
- in response to determining that the first machine and the second machine can communicate using the direct memory access enabled channel, performing:
- during performance of a database operation that involves transfer of data from the second machine to the first machine, receiving in the first segment of memory said data from the second machine over a direct memory access enabled channel, and
- wherein receiving in the first segment of memory said data includes buffering a portion of said data received from the second machine in one or more buffers of the plurality of buffers;
- and
- in response to determining that either the first machine or the second machine cannot use the direct memory access enabled channel, the first machine receiving, from the second machine, second data, associated with the subsequent database operation, using an Internet Protocol (IP) enabled channel,
- wherein verifying that the first machine and the second machine can communicate using the direct memory access enabled channel comprises at least one of the following steps:
- sending a test message to the second machine over the direct memory access enabled channel,
- causing the second machine to send a test message to the first machine over the direct memory access enabled channel, and
- comparing information about resources on the second machine for using the direct memory access enabled channel with resources on the first machine for using the direct memory access enabled channel.
Dependencies are inferred from the claim text.