Coder Social home page Coder Social logo

embedded-innodb's People

Contributors

rahulkushwaha avatar subains avatar sunbains avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar

embedded-innodb's Issues

Remove the insert buffer

It was supposed to cache non-unique secondary index inserts. It interferes with the buffer cache and complicates things and the value is moot.

Don't remove pages of deleted table spaces immediately from the buffer pool, evict them lazily

The scheme in 8.x is to use a version number per page to check the staleness of a page. Maintain a version number in the table instance too. Don't delete the table instance in the data dictionary but move it to a deleted list. The version number is incremented when the tablespace is deleted. When selecting a victim from the LRU list or when flushing from the flush list check the staleness of the page for reuse or ignore during writes and them to the free list.

We could also add them to the free list when we find them during LRU or FLUSH list traversal for whatever reason.

Split the kernel mutex

The core work was done in v5.6 the later optimizations for RO were done in v5.7. The latter are fairly easy once the 5.6 changes are in place.

Expand on the original InnoDB idea of multiple redo log files

The original plan was to write to multiple redo log files or a group of files.. Where each fie can be on its own device to exploit parallel writes. The writing part is easy, the reading is a little bit more involved but doable. Parallel recovery should make that fairly straight forward .

The only downside I can think off is multiple fsyncs. Will it be a problem across multiple devices?

Remove the LRU around file descriptors

I think we should initially just remove it and then find a better way to do this after the new io_uring based model. Currently it can become a bottleneck under heavy IO load.

Test recovery

Didn't run any recovery tests. Need write some tests, run a default suite before pushing.

More modern buffer cache

The modified LRU works well enough but there have been advances in this field since. There is ARC, LIRS and W TinyFLU to consider these days. With the simplified buffer pool code, we can experiment with these new schemes too.

Remove all row formats, keep the original row format

Compact and later formats were a misguided attempt to reduce the size of the rows. They generates more redo, makes instant DDL and recovery difficult. The calculation of the offsets each time one has to access the row is a waste of CPU too. It makes the code unnecessarily complicated too. These were good ideas in 2004/5, better ways to solve this problem.

Better solution is to implement key prefix/suffix and better compression at the table-space level.

Allow bulk flushing

Currently all write go via the flush list and this causes mutex bottlenecks. Need to figure out a way to do write pages directly via the buffer pool especially during shutdown or bulk operations.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.