【一起学习Mysql】Msql的高级特性

本文介绍了MySQL的高级特性,包括分区表的概念和适用场景,如RANGE和HASH分区,以及其优缺点。视图作为虚拟表,提供了简化查询的途径,但存在修改限制。外键约束在InnoDB存储引擎中用于保持数据一致性,但可能影响并发性能。此外,讨论了存储过程、触发器、绑定变量、字符集、全文索引和分布式事务等,分析了它们的优缺点和使用场景。最后提到了查询缓存的配置与优化策略。
摘要由CSDN通过智能技术生成

每日一句:虽然你没有我前女友漂亮 但我一见到你就有种想跟你定下来的感觉

Mysql中除了常用的开发过程中使用到的DML、DCL等常用功能之外,还有一些高级特性,也可以帮助实现高性能的查询以及在某些场景下更好的使用Mysql

分区表

定义:分区表是一个独立的逻辑表,底层是多个物理表组成。简单来说,就是创建一个分区表,这个分区表将原本数据量很大的数据表根据某个字段进行分区,分到不同的磁盘文件中存储,在查询的时候可以直接去对应的分区查询,相对于在大表中查询,更快速

适用场景:在查询一个大表的时候非常慢,并且该表中只有部分为热点数据,那么如何进行优化呢?在不删除历史数据的情况下,主要有3种方式:1. 分库分表 2. 分区表 3.将历史数据迁移到备份表(在历史数据不会使用的情况下)

  • 分库分表

    常见的解决方案,良好的扩展性,可以解决数据量过大的问题以及单机Mysql容量问题。提高查询性能,只是会让系统更复杂,需要做一个额外的业务代码或者中间层代理来实现

  • 分区表

    由Mysql来对表进行分区,系统不会变的复杂,由Mysql中需要维护分区表,根据指定的字段分区,查询的时候会根据分区键到分区表查询,不会查询大表而是由分区表来控制查询指定的分区

  • 历史数据迁移备份表

    大表的历史数据如果不使用的情况下, 可以将历史数据迁移到备份表中来减小当前表的数据量,增加查询速度。但是如果历史数据都是有用的数据,则无法迁移

分区表的类型
  • RANGE分区

    根据范围进行分区,每个分区存储的是指定范围的数据

    create table sales (
    	create_time datetime NOT NULL,
    	....
    ) ENGINE = InnoDB PARTITION By RANGE(YEAR(create_time))
    	(
    	PARTITION p1 VALUES LESS THAN (2010),
    	PARTITION p2 VALUES LESS THAN (2011),
    	PARTITION p3 VALUES LESS THAN (MAXVALUE) );
    

    根据create_time进行分区,最后一个分区是将大于2011的所有数据都保存到该分区中。

    查询时根据create_time查询分区表的效率会更高

  • Hash分区

    如果如果时间等范围来作为分区的分区键,那么可以使用Hash分区,将指定的字段进行hash,然后根据hash值进行分区

    CREATE TABLE test (
        id INT NOT NULL,
        ...
    ) ENGINE = InnoDB
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值