网站建设中 下载,优秀wordpress,郑州百度推广代理公司,免费制作微信小程序的网站数据库相关 MySQL的索引使用 默认会有主键索引。 索引分类#xff1a;单值索引、复合索引、唯一索引 详细文章 MySQL explain 分析 MySQL通过explain关键字分析SQL的执行计划。#xff08;Oracle通过EXPLAIN PLAN FOR sql#xff09; IDSELECT_TYPETABLEPARTITIONSTYPEPOSS…数据库相关 MySQL的索引使用 默认会有主键索引。 索引分类单值索引、复合索引、唯一索引 详细文章 MySQL explain 分析 MySQL通过explain关键字分析SQL的执行计划。Oracle通过EXPLAIN PLAN FOR sql IDSELECT_TYPETABLEPARTITIONSTYPEPOSSIBLE_KEYSKEYKEY_LENREFROWSFILTEREDEXTRAID执行顺序由上至下ID值越大越先执行。SELECT_TYPE查询的类型。TABLE输出结果集的表。PARTITIONS分区表命中的分区情况非分区表为空。TYPE重要指标之一访问类型。性能由好-差的连接类型为system - const - eq_ref - ref - ref_or_null - index_merge - index_subquery - range - index - all。POSSIBLE_KEYS可能使用到的索引。KEY实际使用到的索引。KEY_LENKEY的长度越短越好。REF表连接的匹配条件。const常数等值查询func表达式或函数或内部隐式转换。ROWS扫描行的数量。估算FILTERED条件过滤后对比总数的百分比。EXTRA执行情况的说明和描述。 详细文章 说说反模式设计 数据库范式能够使数据库表的设计更加规范但会导致业务模型涉及的表过多一次查询需要多次关联导致性能变差。出于对性能的保护提出了反模式设计。核心思想是空间换时间数据冗余避免表关联过多产生的问题。 说说分库与分表设计 一般表数据大于500万行或单表容量超过2GB。 分库分表策略分片策略1、日期 2、Hash 3、范围 4、税率 数据库中间件MyCat 、 ShadingJDBC 分库分表后查询逻辑 携带分片字段对具体表进行分页查询。不携带分片字段对每张表进行分页查询然后通过中间件进行整合二次分页后返回给客户端。 分库与分表带来的分布式困境与应对之策 产生的问题含有跨库JOIN问题、排序分页问题、分布式ID问题 跨库JOIN应对之策 1建立全局表存放所有模块可能依赖的字段但只能存不怎么修改的字段。 2字段冗余设计也就是反模式设计 排序分页应对之策 1增大PageSize 2禁止跳页查询只允许下一页 分布式ID应对之策 1UUID 2数据库自增 3号段模式 4类似雪花算法 说说SQL优化之道 1定位慢SQL 2分析执行计划 3增加索引或修改SQL 详细文章 MySQL遇到的死锁问题 1、本人经历过的数据库连接数导致生产死锁的问题 正常逻辑为A请求B数据-请求C数据-释放连接。 数据库连接数为8恰逢8个请求占有了连接数连接未释放此时新进的请求需要连接相互等待资源释放却又因为B-C连接数满无法等到导致死锁。 存储引擎MyISAM和InnoDB MyISAM不支持事务。 由于多数系统都需要数据库的事务支持MyISAM不支持事务因此现有大部分都是InnoDB存储引擎。 详细文章 数据库索引的原理 Mysql以B树为数据结构通过树结构存储索引的数据并在叶子结点存储索引的值。 为什么要使用B树 查询效率高。 聚集索引与非聚集索引的区别 聚集索引一个表只能有一个。占用空间较非聚集索引小。 limit 20000 加载很慢如何处理 MySQL的性能低是因为数据库要去扫描N M条记录然后又要放弃之前N 条记录开销很大。 1、缓存进行优化 2、延迟关联先通过limit查找索引字段再通过原表和索引字段关联获得需要的数据 选择合适的分布式主键方案 根据每个方案进行分析 1UUID 简单长度过长没有具体业务含义不利于索引。 2数据库自增 2.1 单节点创建一个表每次插入一条数据根据返回的自增主键为分布式主键。单节点有宕机风险。 2.2 集群不同集群的自增设置起始值和步长。后期扩容时需要考虑冲突。 3号段模式 一批号段的主键ID用完再次申请。 4类似雪花算法 64位的ID各大厂商有自己的一些开源框架自行查看。