# Storage engine for a datmart

**URL:** <https://forums.percona.com/t/storage-engine-for-a-datmart/896>\
**Category:** Other MySQL® Questions\
**Created:** [August 22, 2008, 1:22am UTC](https://forums.percona.com/t/storage-engine-for-a-datmart/896 "2008-08-22T01:22:47Z")\
**Posts on this page:** 3\
**Page:** 1

<div class="post-metadata">

**Author:** ![vgatto](https://sea1.discourse-cdn.com/flex019/user_avatar/forums.percona.com/vgatto/32/748_2.png) [@vgatto](https://forums.percona.com/u/vgatto)\
**Post date:** [August 22, 2008, 1:22am UTC](https://forums.percona.com/t/storage-engine-for-a-datmart/896/1 "2008-08-22T01:22:47Z")

</div>

I’m currently designing a data mart using MySQL. My updates and inserts will occur rarely (at most hourly) and they will always be made in bulk by first loading the data into temporary tables and then merging it with the destination table. The selects will be far more numerous, coming from a set of tightly defined end-user reporting queries. Right now I’m using MyISAM, mostly because I don’t need the transaction support of InnoDB, and I’m hoping to gain a performance advantage when loading data.

I’ve read some things that suggest that as the tables and indexes grow large, InnoDB may perform better at index caching and table joins than MyISAM. Anyone out there have any experience using either MyISAM or InnoDB for a data mart or data warehouse?

---

<div class="post-metadata">

**Author:** ![Speeple](https://avatars.discourse-cdn.com/v4/letter/s/73ab20/32.png) [@Speeple](https://forums.percona.com/u/Speeple)\
**Post date:** [August 23, 2008, 8:08am UTC](https://forums.percona.com/t/storage-engine-for-a-datmart/896/2 "2008-08-23T08:08:24Z")

</div>

Data warehousing is a storage heavy practice. InnoDB consumes substantially more storage per than MyISAM for the same data.

The reason InnoDB can perform faster in some cases is due to the adaptive hash indexes, which creates a hash index smartly depending on the frequency of data hits.

Unless you can store a good percentage of your data in RAM I doubt it will be much benefit. Not to forget that InnoDB not only caches index data in its buffer, but also normal row data.

---

<div class="post-metadata">

**Author:** ![brooksaix](https://avatars.discourse-cdn.com/v4/letter/b/a88e57/32.png) [@brooksaix](https://forums.percona.com/u/brooksaix)\
**Post date:** [August 28, 2008, 5:07pm UTC](https://forums.percona.com/t/storage-engine-for-a-datmart/896/3 "2008-08-28T17:07:55Z")

</div>

One of the main advantages InnoDB has over MyISAM is clustered indexes, which is often underestimated as there is often (usually?) one prime access path for reports, such as dates.

Plus, with sensible table optimization, the size advantage of MyISAM over InnoDB is often more like 60% to 100%.

For more information, and to completely plug my own blog:

[http://dbscience.blogspot.com/2008/08/innodb-suitability-for](http://dbscience.blogspot.com/2008/08/innodb-suitability-for) -reporting.html
