4 ms·
Normalization is the ideal, but sometimes you have to de-normalize for performance. Big, complex joins can be a performance killer. Most apps won't reach the sc
by actsasbuffoon 8y ago
Normalization is the ideal, but sometimes you have to de-normalize for performance. Big, complex joins can be a performance killer. Most apps won't reach the scale where they need to worry about this, but WoW definitely has reached it.
- Const-me 8y ago> Most apps won't reach the scale where they need to worry about this That’s true for servers running on modern hardware (lots of RAM, extremely fast SSDs), but when I’m working on desktop, mobile or embedded apps, some of them need embedded databases, and I still need to worry about it. On desktops not all users have SSDs, so when the data is larger than a couple of GB i.e. can’t be cached in RAM, every IO takes 4-5ms because HDD seek latency. Mobile/embedded devices typically have flash memory so the IO latency is lower, but that flash memory is not as fast as modern desktop or servers SSDs. E.g. some Android phones have 2000 random read IOPS, 220 random write IOPS https://www.phonearena.com/news/Android-storage-speed-comparison-which-phone-has-the-fastest-IO-performance_id65588 https://www.phonearena.com/news/Android-storage-speed-compar... P.S. I even need to worry about this when I’m designing RAM-only data structures. On modern systems, RAM is block device (the block size is 128 bit for dual-channel RAM), and there’s a pre-fetcher silicon in CPUs making sequential access much faster than random access.