经常用redis mongodb memcached等来优化网站性能,因为数据库对于高频读写不擅长,那么以mysql为例,制约他性能的原因是什么?
---------------------------------------------------------------------
互联网所有的性能问题基本上都是I/O问题。
ACID,如果减弱甚至取消这方面的保证,数据库的性能可以提高几个数量级,但是完全没有ACID的数据库用途会减少几个数量级,所以现在很多的NoSQL数据库都选择性的减弱一些ACID保证以换取更高的性能和可缩放性。
磁盘读写速度
还有应用上面就是是否使用索引。
数据引擎等(MyISAM,InnoDB)等。
索引和硬件的存取速度,如果是用内存或者ssd,服务速度会提高不少
传统的磁盘受限于磁头和盘片的物理性能,做的再快也没电子设备快
除了磁盘IO还有就是数据库底层的各种算法了。
================
ACID原则是数据库事务正常执行的四个,分别指原子性、一致性、独立性及持久性
事务的原子性(Atomicity)是指一个事务要么全部执行,要么不执行.也就是说一个事务不可能只执行了一半就停止了.比如你从取款机取钱,这个事务可以分成两个步骤:1划卡,2出钱.不可能划了卡,而钱却没出来.这两步必须同时完成.要么就不完成.
独立性(Isolation):事务的独立性也有称作隔离性,是指两个以上的事务不会出现交错执行的状态.因为这样可能会导致数据不一致.