Java开发丨说说mysql的存储引擎,有什么区别?索引的介绍

2 02 3 年,我那个朋友的公司在做数据库优化,他们选择了InnoDB存储引擎。
他说,InnoDB支持ACID事务,这对他处理订单数据特别重要,能保证数据的一致性和完整性。
而且,支持行级锁,对于高并发写操作来说,效率很高。

上周,我了解到他们还用MyISAM存储引擎来处理日志记录,因为读多写少,MyISAM的读取速度更快。
不过,他说这个存储引擎不支持事务,有时候会有些小麻烦。

Memory存储引擎,他说主要用于缓存数据,读写速度极快,但数据重启后就会丢失,所以他们只用于临时数据。

至于Archive,他说适合存储归档数据,因为数据量大且不常访问,压缩后存储更高效。

我那个朋友还提到,他们使用了复合索引来提高查询效率,但要注意不要过度索引,因为会增加维护成本。

他说,通过合理选择存储引擎和设计索引,确实能显著提高数据库的性能。
不过,这需要不断优化和调整,是个技术活儿。
你看着办吧,数据库优化挺复杂的。

说一下 mysql 常用的引擎?

哎,咱这做IT的,天天跟数据库打交道,最头疼的就是选存储引擎了。
以前刚入行那会儿,那可真是两眼一抹黑,啥也不懂。
记得那会儿,有个项目要用MySQL,领导让我选存储引擎,我当时就蒙了,InnoDB和MyISAM,这两者到底啥区别啊?
那时候我就傻乎乎地去查资料,研究了好几天,才大概明白。
InnoDB那个玩意儿,就像是银行的ATM机,你操作的时候,不管是存钱还是取钱,它都能保证你的钱不会少,也不会多,就是那种原子性、一致性、隔离性和持久性,听起来就挺高大上的。
我那时候就想,这玩意儿得多贵啊,结果呢,它是MySQL的默认引擎,免费!
再说说MyISAM,这就像是个小卖部,你买东西,老板一算账,就记在账本上,没那么多讲究。
它不支持事务,就是说你操作的时候,如果中间出了点问题,数据可能就乱了套。
不过呢,它的查询速度挺快,适合读多写少的场景。

后来项目上线了,我也算是踩了不少坑。
有一次,一个电商项目,高并发的时候,订单处理得特别慢,一查才知道,原来是MyISAM那个表级锁定的问题,一个用户下单,其他用户就只能干瞪眼。
赶紧换成InnoDB,问题才解决。

再后来,我负责的一个银行项目,数据安全性那是必须的,我就坚决用了InnoDB。
那玩意儿的事务支持,崩溃恢复机制,外键约束,简直就是为了这种场景设计的。

所以说啊,选存储引擎这事儿,得根据具体业务来。
你要是做金融、电商这种高并发、数据一致性要求高的业务,InnoDB那是首选。
你要是做日志记录、历史数据归档这种读多写少的业务,MyISAM也还行。
但不管咋说,别光看资料,得多实践,多踩坑,才能慢慢学会怎么选。