Mysql总结

ACID:

  1. 原子性
  2. 一致性
  3. 隔离性
  4. 永久性

Myisam与Innodb

myisam注重性能,Innodb注重事务与数据一致性:
1. myisam主键读取与innodb主键读取的效率,innodb貌似要快些。
2. myisam与innodb的count操作差别,当全表不走索引的查询,myisam的性能远高于Innodb,因为myisam保存着count。
3. myisam读取和修改数据性能要比innodb高,读取数据时,innodb会维护其他信息,例如缓存和mvcc(事务号多版本控制),修改的时候涉及到事务和并发的表行锁,并发的情况下,innodb可能更占优势。
4. 全文索引+空间索引
5. 事务支持

主键索引:

reset query cache;
select * from problem_submit_innodb where id=700000;
// 0.053s(直接得到数据,聚蔟索引)

reset query cache;
select * from problem_submit_myisam where id=700000;
// 0.070s(先查找到数据地址,再到文件得到数据,非聚蔟索引)

辅助索引:

reset query cache;
select * from problem_submit_innodb where compiler_id=6 limit 0,1;
// 0.061s

reset query cache;
select * from problem_submit_myisam where compiler_id=6 limit 0,1;
// 0.326s

count:

reset query cache;
select count(*) from problem_submit_innodb; //17.489s

reset query cache;
select count(*) from problem_submit_myisam; //0.001s

分表

当数据量达到一定程度,数据库性能出现瓶颈,考虑分表:
分表增加代码逻辑,优势体现在:缺少有效索引而进行的全表扫描上,此时可以通过分表对全表(指定条件)的规模进行缩小,实现查询优化。
相反,因为索引B+树最高三四层,分表后进行全表扫描,效率可能比不分表还要差,分表的优势只存在直接操作子表而非总表。
例如对于订单查询逻辑来说,用户会经常查询自己的订单,那么我们可以根据用户id进行一个分表,但是如果我们需要查询某个商品的购买情况,我们就不会通过用户的表进行查询,而是通过问题分表查询更好,所以可以产生多个主从数据库,将不同的分表分开,然后通过DB路由实现不同表结构的高效访问。

order by

order by 索引,索引第一个字段

常见概念

分布式数据库,将大任务进行分解,分派执行再合并结果。
数据库集群,分摊单个数据库压力。
读写分离,分离读锁和写锁的争抢,提高读效率和写效率。
主从数据库,数据安全性,同步和异步,容灾,相同数据不同结构,数据冗余存多份。
搜索引擎优化。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值