Streaming engine with separately selectable element and group duplication
US-11860790-B2 · Jan 2, 2024 · US
US9495296B2 · US · B2
| Field | Value |
|---|---|
| Publication number | US-9495296-B2 |
| Application number | US-201414165974-A |
| Country | US |
| Kind code | B2 |
| Filing date | Jan 28, 2014 |
| Priority date | Jun 12, 2013 |
| Publication date | Nov 15, 2016 |
| Grant date | Nov 15, 2016 |
A practical reading order for non-experts. Skip the full description unless you need deep technical detail.
What the patent document calls the invention.
A short plain-language summary of the technical disclosure.
Who owns or filed the patent and who is credited as inventor.
Filing, priority, publication, and grant dates set the timeline.
The legal scope of protection — read this for what is actually claimed.
Technology tags used to group this patent with similar filings.
Prior art links and similar publications in this corpus.
Official abstract text for this publication.
Handling memory pressure in an in-database sharded queue is described. Messages from a plurality of enqueuers are stored in a plurality of shards of a sharded queue. Messages from a first enqueuer are stored in a first shard. A queue table corresponding to the sharded queue is maintained. In volatile memory, a plurality of message caches is maintained, each message cache corresponding to a shard of the plurality of shards. Memory pressure is detected based on memory usage of the volatile memory. To store a specific message from the enqueuer, the specific message is stored in rows of the queue table that are assigned to the first shard. When memory pressure is not detected, the specific message is stored in a first message cache corresponding to the first shard. Subscribers of the sharded queue are caused to dequeue messages from the plurality of shards.
Opening claim text (preview).
What is claimed is: 1. A method comprising: enqueueing messages from a plurality of enqueuers in a plurality of shards of a sharded queue; wherein the plurality of enqueuers comprises a first enqueuer, wherein all messages from the first enqueuer are enqueued in a first shard; maintaining, in a relational database system, a queue table corresponding to the sharded queue; maintaining, in volatile memory, a plurality of message caches, each message cache corresponding to a shard of the plurality of shards; determining whether memory pressure is detected based on memory usage of the volatile memory; wherein enqueueing a specific message from the first enqueuer in the first shard comprises: responsive to not detecting memory pressure: storing the specific message in a row of the queue table that is assigned to the first shard; and storing the specific message in a first message cache of the plurality of message caches, the first message cache corresponding to the first shard; responsive to detecting memory pressure, storing the specific message in a row of the queue table that is assigned to the first shard without storing the specific message in the first message cache; causing subscribers of the sharded queue to dequeue messages from the plurality of shards; wherein the method is performed by one or more computing devices. 2. The method of claim 1 , wherein the first shard of the plurality of shards comprises a plurality of subshards; wherein the specific message is stored in a row of the queue table that is assigned to a current subshard of the first shard; wherein the first message cache comprises a plurality of circular buffers each corresponding to a subshard of the first shard; wherein storing the specific message in the first message cache comprises storing the specific message in a current buffer of the plurality of circular buffers, the current buffer corresponding to the current subshard. 3. A method comprising: storing messages from a plurality of enqueuers in a plurality of shards of a sharded queue; wherein the plurality of enqueuers comprises a first enqueuer, wherein messages from the first enqueuer are stored in a first shard; maintaining, in a relational database system, a queue table corresponding to the sharded queue; maintaining, in volatile memory, a plurality of message caches, each message cache corresponding to a shard of the plurality of shards; determining whether memory pressure is detected based on memory usage of the volatile memory; wherein storing a specific message from the first enqueuer comprises: responsive to not detecting memory pressure: storing the specific message in a row of the queue table that is assigned to the first shard; and storing the specific message in a first message cache of the plurality of message caches, the first message cache corresponding to the first shard; responsive to detecting memory pressure, storing the specific message in a row of the queue table that is assigned to the first shard without storing the specific message in the first message cache; causing subscribers of the sharded queue to dequeue messages from the plurality of shards; wherein the first message cache comprises a fixed-memory portion and a variable-memory portion; wherein, when memory pressure is not detected, the specific message is stored in the variable-memory portion of the message cache; the method further comprising, when memory pressure is detected, storing message metadata corresponding to the first message in the fixed-memory portion of the first message cache; wherein the method is performed by one or more computing devices. 4. A method comprising: enqueueing messages from a plurality of enqueuers in a plurality of shards of a sharded queue in a shared-disk database system; maintaining, by the shared-disk database system, a queue table corresponding to the sharded queue; maintaining, in volatile memory at one or more computing devices executing database instances of the shared-disk database system, a plurality of message caches, each message cache corresponding to a shard of the plurality of shards; wherein the plurality of enqueuers comprises a first enqueuer, wherein all messages from the first enqueuer are enqueued in a first shard of the plurality of shards; determining whether memory pressure is detected at a first instance of the shared-disk database based on memory usage of volatile memory of a first computing device executing the first instance, wherein a first message cache corresponding to the first shard is maintained in the volatile memory of the first computing device; based at least in part on whether memory pressure is detected at the first instance, setting the first shard as cached or uncached; wherein enqueueing a specific message from the first enqueuer in the first shard comprises: determining whether the first shard is currently cached; storing the specific message in a row of the queue table that is assigned to the first shard; responsive to determining that the first shard is currently cached, storing the specific message in the first message cache; responsive to determining that the first shard is not currently cached, storing message metadata corresponding to the specific message in the first message cache without storing the specific message in the first message cache; wherein the method is performed by one or more computing devices. 5. The method of claim 4 , wherein the first shard of the plurality of shards comprises a plurality of subshards; wherein storing the specific message in a row of the queue table that is assigned to the first shard includes storing the specific message in a row of the queue table that is assigned to a current subshard of the plurality of subshards of the first shard; wherein storing the message in the first message cache includes storing the specific message in a current buffer of the first message cache, the current buffer corresponding to the current subshard; wherein determining whether the first shard is currently cached comprises determining whether the current subshard is a cached subshard or an uncached subshard. 6. The method of claim 5 , wherein setting the first shard as cached or uncached includes: responsive to detecting memory pressure, if the current subshard is a cached subshard, switching the current subshard to a next subshard, wherein the next subshard is uncached; wherein subsequent messages enqueued in the first shard are stored in a partition rows of the queue table that are assigned to the next subshard. 7. The method of claim 5 , further comprising: converting a first cached subshard to a first uncached subshard; and converting a second uncached subshard to a second cached subshard. 8. The method of claim 5 , further comprising: causing subscribers of the sharded queue to dequeue messages from the plurality of shards; wherein dequeuing a selected message stored in a selected subshard of the first shard comprises: when the selected subshard is a cached subshard, dequeuing the selected message from a corresponding buffer of the first message cache; when the selected subshard is an uncached subshard, dequeuing the selected message from the queue table using SQL. 9. The method of claim 5 , further comprising: causing a subscriber at a second instance of the shared-disk database to dequeue messages from the first message cache by generating a shadow shard of the first shard at the second instance by transmitting entries of the first message cache over an interconnect of the shared-disk database; wherein generating the shadow shard at the second instance comprises populating a second message cache corresponding to the shadow shard a
Partitioned cache, e.g. separate instruction and operand caches · CPC title
File systems; File servers · CPC title
Structured object, e.g. database record · CPC title
Data transfer between cache memory and other subsystems, e.g. storage devices or host systems · CPC title
Physics · mapped topic
Related publications grouped by family.
Answers are generated from the same data shown on this page.