首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

【干货】MySQL数据库开发规范

,从一开始就进行数据字典维护 尽量控制单表数据量大小500w以内,超过500w可以使用历史数据归档,分库分表来实现(500万行并不是MySQL数据库限制。...MySQL没有对存储有限制,取决于存储设置和文件系统) 谨慎使用mysql分区表分区表物理上表现为多个文件,逻辑上表现为一个表) 谨慎选择分区键,跨分区查询效率可能更低 建议使用物理分表方式管理大数据...限制好处:减少磁盘io,保证热数据内存缓存命中率,避免读入无用冷数据) 禁止表中建立预留字段(无法确认存储数据类型,对预留字段类型进行修改,会对表进行锁定) 禁止在数据中存储图片,文件二进制数据...(使用文件服务器) 禁止在线上做数据库压力测试 禁止从开发环境,测试环境直接连生产环境数据库 限制每张表索引数量,建议单表索引不超过5个(索引会增加查询效率,但是会降低插入和更新速度)...varchar字段建立索引时,必须指定索引长度,没必要对全字段建立索引,根据实际文本区分度决定索引长度即可。

1.2K20

GreenPlum中数据库对象

使用压缩存储 存储具有压缩优势。 CREATE TABLE时使用WITH子句指定表存储模式。...一个已分区表主键或者唯一约束必须包含所有的分区。一个唯一索引可以忽略分区,但是它只能在已分区表每个部分而不是整个已分区被强制。...要在一个被分区创建索引,就在用户创建分区表创建一个索引。该索引会被传播到Greenplum数据库所创建所有子表。不支持Greenplum数据库为分区表创建子表创建索引。...只有索引与Greenplum分布键相同(或者是其超集)时,Greenplum数据库才允许唯一索引追加优化表不支持唯一索引分区表,唯一索引无法一个分区表所有子表分区之间被实施。...测试并且比较使用索引和不使用索引查询性能。只有被索引查询性能有提升时才增加索引创建一个索引 CREATE INDEX命令一个表定义一个索引

58320
您找到你想要的搜索结果了吗?
是的
没有找到

面试中有哪些经典数据库问题?

,如果存储数据重复度很低(也就是说基数很大),对该数据以等值查询为主,没有范围查询、没有排序时候,特别适合采用哈希索引,例如这种SQL: select id,name from table where...2、利用索引附加,您可以缩小搜索范围,但使用一个具有索引 不同于使用两个单独索引。...分表与分区区别在于:分区从逻辑上来讲只有一张表,而分表则是将一张表分解成多张表。 十二、表分区有什么好处? 1、分区表数据可以分布不同物理设备,从而高效地利用多个硬件设备。 2....where语句中包含分区条件时,可以只扫描一个或多个分区表来提高查询效率;涉及sum和count语句时,也可以多个分区并行处理,最后汇总结果。 3、分区表更容易维护。...,查询和索引定义上有一定影响; 避免表字段运行为null,建议设置默认值(例如:int类型设置默认值为0)索引查询,效率立显; 建立索引,最好建立唯一和非空字段,建立太多索引对后期插入、

78810

面试中有哪些经典数据库问题?

,如果存储数据重复度很低(也就是说基数很大),对该数据以等值查询为主,没有范围查询、没有排序时候,特别适合采用哈希索引,例如这种SQL: select id,name from table where...2、利用索引附加,您可以缩小搜索范围,但使用一个具有索引 不同于使用两个单独索引。...分表与分区区别在于:分区从逻辑上来讲只有一张表,而分表则是将一张表分解成多张表。 十二、表分区有什么好处? 1、分区表数据可以分布不同物理设备,从而高效地利用多个硬件设备。 2....where语句中包含分区条件时,可以只扫描一个或多个分区表来提高查询效率;涉及sum和count语句时,也可以多个分区并行处理,最后汇总结果。 3、分区表更容易维护。...,查询和索引定义上有一定影响; 避免表字段运行为null,建议设置默认值(例如:int类型设置默认值为0)索引查询,效率立显; 建立索引,最好建立唯一和非空字段,建立太多索引对后期插入、

83430

面试中有哪些经典数据库问题?

,如果存储数据重复度很低(也就是说基数很大),对该数据以等值查询为主,没有范围查询、没有排序时候,特别适合采用哈希索引,例如这种SQL: select id,name from table where...2、利用索引附加,您可以缩小搜索范围,但使用一个具有索引 不同于使用两个单独索引。...分表与分区区别在于:分区从逻辑上来讲只有一张表,而分表则是将一张表分解成多张表。 十二、表分区有什么好处? 1、分区表数据可以分布不同物理设备,从而高效地利用多个硬件设备。2....where语句中包含分区条件时,可以只扫描一个或多个分区表来提高查询效率;涉及sum和count语句时,也可以多个分区并行处理,最后汇总结果。 3、分区表更容易维护。...,查询和索引定义上有一定影响; 避免表字段运行为null,建议设置默认值(例如:int类型设置默认值为0)索引查询,效率立显; 建立索引,最好建立唯一和非空字段,建立太多索引对后期插入、

78420

面试中有哪些经典数据库问题?

,如果存储数据重复度很低(也就是说基数很大),对该数据以等值查询为主,没有范围查询、没有排序时候,特别适合采用哈希索引,例如这种SQL: select id,name from table where...2、利用索引附加,您可以缩小搜索范围,但使用一个具有索引 不同于使用两个单独索引。...分表与分区区别在于:分区从逻辑上来讲只有一张表,而分表则是将一张表分解成多张表。 十二、表分区有什么好处? 1、分区表数据可以分布不同物理设备,从而高效地利用多个硬件设备。2....where语句中包含分区条件时,可以只扫描一个或多个分区表来提高查询效率;涉及sum和count语句时,也可以多个分区并行处理,最后汇总结果。 3、分区表更容易维护。...,查询和索引定义上有一定影响; 避免表字段运行为null,建议设置默认值(例如:int类型设置默认值为0)索引查询,效率立显; 建立索引,最好建立唯一和非空字段,建立太多索引对后期插入、

74220

面试中有哪些经典数据库问题?

,如果存储数据重复度很低(也就是说基数很大),对该数据以等值查询为主,没有范围查询、没有排序时候,特别适合采用哈希索引,例如这种SQL: select id,name from table where...2、利用索引附加,您可以缩小搜索范围,但使用一个具有索引 不同于使用两个单独索引。...分表与分区区别在于:分区从逻辑上来讲只有一张表,而分表则是将一张表分解成多张表。 十二、表分区有什么好处? 1、分区表数据可以分布不同物理设备,从而高效地利用多个硬件设备。 2....where语句中包含分区条件时,可以只扫描一个或多个分区表来提高查询效率;涉及sum和count语句时,也可以多个分区并行处理,最后汇总结果。 3、分区表更容易维护。...,查询和索引定义上有一定影响; 避免表字段运行为null,建议设置默认值(例如:int类型设置默认值为0)索引查询,效率立显; 建立索引,最好建立唯一和非空字段,建立太多索引对后期插入、

1.2K01

24 个必须掌握数据库面试问题!

,如果存储数据重复度很低(也就是说基数很大),对该数据以等值查询为主,没有范围查询、没有排序时候,特别适合采用哈希索引,例如这种SQL: # 仅等值查询 select id, name from...2、利用索引附加,您可以缩小搜索范围,但使用一个具有索引不同于使用两个单独索引。...分表与分区区别在于:分区从逻辑上来讲只有一张表,而分表则是将一张表分解成多张表。 十二、表分区好处 1、存储更多数据 分区表数据可以分布不同物理设备,从而高效地利用多个硬件设备。...2、优化查询 where语句中包含分区条件时,可以只扫描一个或多个分区表来提高查询效率;涉及sum和count语句时,也可以多个分区并行处理,最后汇总结果。...,查询和索引定义上有一定影响; 避免表字段运行为null,建议设置默认值(例如:int类型设置默认值为0)索引查询,效率立显; 建立索引,最好建立唯一和非空字段,建立太多索引对后期插入、

44420

24 个MySQL面试题,Java 程序员又知道多少呢?

2、利用索引附加,您可以缩小搜索范围,但使用一个具有索引不同于使用两个单独索引。...分区表数据可以分布不同物理设备,从而高效地利用多个硬件设备。和单个磁盘或者文件系统相比,可以存储更多数据 2、 优化查询 。...where语句中包含分区条件时,可以只扫描一个或多个分区表来提高查询效率;涉及sum和count语句时,也可以多个分区并行处理,最后汇总结果。 3、 分区表更容易维护 。...纯粹基于锁并发机制并发量低,MVCC是基于锁并发控制改进,主要是在读操作提高了并发量。...,查询和索引定义上有一定影响; 避免表字段运行为null,建议设置默认值(例如:int类型设置默认值为0)索引查询,效率立显; 建立索引,最好建立唯一和非空字段,建立太多索引对后期插入、

80840

举一反三-分区裁剪作用“新”发现

实验论证 分别创建分区表和普通表 假设该表是用于存储学生信息,其共有四: 第一stu_year,表示学生入学年份; 第二stu_no,表示学号(5位序号),每年新生都从00001开始; 第三...从WHERE子句中去除分区键条件 分区表查询用SQL分区表执行后,得到执行计划和运行统计信息如下: 从上图可见,由于去除了分区键条件,造成对分区表扫描是要访问全部5个分区。...stu_no学号列上创建索引 分区表STU_NO列上创建本地分区索引分区表执行后,得到执行计划和运行统计信息如下: 如上图所示,只访问了单个分区(即第4个分区)。...那么,如果在分区表STU_NO列上,创建一个非分区索引,还会有分区裁剪作用吗? 首先,我们STU_NO列上创建非分区索引。...由于此前已经该列上创建过本地分区索引,所以,需要先把该索引删除后,才能创建同一非分区索引

1K100

一次 MySQL 千万级大表优化过程

索引设计 索引并不是越多越好,要根据查询有针对性创建,考虑WHERE和ORDER BY命令涉及建立索引,可根据EXPLAIN来查看是否用了索引还是全表扫描。...长度小索引字段越小越好,因为数据库存储单位是页,一页中能存下数据越多越好。 离散度大(不同值多),放在联合索引前面。...分区 可以让单表存储更多数据。 分区表数据更容易维护,可以通过清楚整个分区批量删除大量数据,也可以增加新分区来支持新插入数据。另外,还可以对一个独立分区进行优化、检查、修复等操作。...部分查询能够从查询条件确定只落在少数分区,速度会很快。 分区表数据还可以分布不同物理设备,从而搞笑利用多个硬件设备。...如果分区字段中有主键或者唯一索引,那么所有主键和唯一索引都必须包含进来。 分区表无法使用外键约束。 NULL值会使分区过滤无效。 所有分区必须使用相同存储引擎。

1.7K30

企业面试题|最常问MySQL面试题集合(三)

3、分区表数据可以分布不同机器,从而高效适用资源。...4、可以使用分区表来避免某些特殊瓶颈 5、可以备份和恢复独立分区 限制 1、一个表最多只能有1024个分区 2、5.1版本中,分区表表达式必须是整数,5.5可以使用分区 3、分区表字段如果有主键和唯一索引...,那么主键和唯一索引都必须包含进来 4、分区表中无法使用外键约束 5、需要对现有结构进行修改 6、所有分区都必须使用相同存储引擎 7、分区函数中可以使用函数和表达式会有一些限制 8、某些存储引擎不支持分区...水平切分缺点 1、给应用增加复杂度,通常查询时需要多个表名,查询所有数据都需UNION操作 2、许多数据库应用中,这种复杂度会超过它带来优点,查询时会增加读一个索引磁盘次数 垂直分表 把主键和一些放在一个表...适用场景 1、如果一个表中某些常用,另外一些不常用 2、可以使数据行变小,一个数据页能存储更多数据,查询时减少I/O次数 缺点 管理冗余,查询所有数据需要join操作 分表缺点 有些分表策略基于应用层逻辑算法

75230

干货|一次MySQL两千万数据大表优化过程,三种解决方案

3.使用枚举或整数代替字符串类型 4.尽量使用TIMESTAMP而非DATETIME 5.单表不要有太多字段,建议20以内 6.用整型来存IP 索引 1.索引并不是越多越好,要根据查询有针对性创建,...考虑WHERE和ORDER BY命令涉及建立索引,可根据EXPLAIN来查看是否用了索引还是全表扫描 2.应尽量避免WHERE子句中对字段进行NULL值判断,否则将导致引擎放弃使用索引而进行全表扫描...MySQL实现分区方式也意味着索引也是按照分区子表定义,没有全局索引 用户SQL语句是需要针对分区表做优化,SQL条件中要带上分区条件,从而使查询定位到少量分区,否则就会扫描全部分区,可以通过...EXPLAIN PARTITIONS来查看某条SQL语句会落在那些分区,从而进行SQL优化,我测试,查询时不带分区条件,也会提高速度,故该措施值得一试。...另外,还可以对一个独立分区进行优化、检查、修复等操作 3.部分查询能够从查询条件确定只落在少数分区,速度会很快 4.分区表数据还可以分布不同物理设备,从而搞笑利用多个硬件设备 5.可以使用分区表赖避免某些特殊瓶颈

4.6K21

explain各字段含义

显示分区表命中分区情况, 非分区表该字段为空(NULL). 5.type 最重要一个指标, 显示查询使用了何种类型 除ALL之外, 其他type都可以用到索引; 除index_merge...存储引擎, 当查询表只有一行或空表情况下,type字段将是system....建议explain时先去除limit 11.filtered 这个字段表示存储引擎返回数据server层过滤后, 剩下多少满足查询记录数量比例; 注意是分比,不是具体记录数. 12....,效率最快 带有order by子句sql中,要尽可能使extra字段不要出现Using filesort,而是Using index 举例如何去掉 Using filesort: explain结果每个字段含义说明...具有LIMIT和不具有LIMITORDER BY可能是不同 file_sort优化器会预先分配固定数量sort_buffer_size字节。

19741

一文搞懂MySQL分区表

一方面,因为MySQLInnoDB引擎使用B+树维护索引,一个典型索引节点大概可以存储60-120个数据记录,一个三层索引大概可以存储百万条数据。...如果订单表增加一个数量级,索引层数也需要增加,查询订单时磁盘IO次数也随着增加,影响性能。 另一方面,为了加快查询效率,订单表通常需要创建一些索引。...分区表中,每个分区实际是一个独立表,包含了与主表相同,并有一个特定分区键,用于确定每行数据所属分区。 分区表有哪些好处?...如果记录值包含在列表中,那么记录将存储相应分区中。 KEY分区:类似于哈希分区,但不是基于哈希函数,而是根据一组键来执行分区。...创建分区表创建分区表时,需要指定分区键,即表哪一值作为分区依据。选择不同分区类型将影响到后面的分区操作和存储方式。

62830

Oracle 12c数据库优化器统计信息收集最佳实践(二)

图4:在线收集统计信息为新创建sales2表提供表和统计信息收集 在线收集统计信息并不会收集直方图和索引统计信息,因为这些种类统计信息需要额外数据扫描,这可能在数据加载时对性能产生较大影响。...图5 : 设置选项为GATHER AUTO来创建 SALES2 表直方图, 而不涉及基本统计信息 注意“HISTOGRAM_ONLY”指示不重新收集基本统计信息情况下收集了直方图。...此过程将具有代表性源 [sub] 分区统计信息复制到新创建和空目标 [子] 分区中。 它还会拷贝相关对象统计信息:、本地(分区)索引等。...图9:读取数据字典,通过过滤器执行任务并存储结果 任务完成后,可以用html或文本格式生成报告,也可以创建操作( SQL)脚本。 ? 图10:报告advisor任务和生成操作SQL脚本。...Schema:shOracle将为每个非分区表创建一个统计收集作业(图12中级别1); » CHANNELS » COUNTRIES » TIMES Oracle将为每个分区表创建一个协调作业

1.5K70

Server层表级别对象字典表 | 全方位认识 information_schema

这两个字段表示触发器关联表所在数据库名称和触发器关联表名 ACTION_ORDER:表示具有相同EVENT_MANIPULATION和ACTION_TIMING值触发器同一个表触发顺序。...MySQL 5.7.2或更高版本中创建触发器时,该字段是一个TIMESTAMP(2)类型值(小数部分保留2位数,即分之一秒),5.7.2之前创建触发器该字段为NULL SQL_MODE:表示创建触发器时会话...如果自存储程序创建以来从未修改过,则该值与CREATED值相同 SQL_MODE:表示创建或修改存储程序时MySQL Serversql_mode值(该字段为 "MySQL extension"...(以字节为单位),即存储分区或子分区中总数据字节数 MAX_DATA_LENGTH:可以存储分区或子分区中最大数据字节数 INDEX_LENGTH:分区或子分区索引文件长度(以字节为单位)...binlog重放方式在从库创建,事件运行状态在从库被关闭 ON_COMPLETION:该包含两个有效值,PRESVEVE、NOT PRESERVE CREATED:创建事件日期和时间。

1K20

Java面试中常问数据库方面问题

利用索引附加,您可以缩小搜索范围,但使用一个具有索引 不同于使用两个单独索引。...where语句中包含分区条件时,可以只扫描一个或多个分区表来提高查询效率;涉及sum和count语句时,也可以多个分区并行处理,最后汇总结果。 分区表更容易维护。...什么是存储过程 简单说,就是一组SQL语句集,功能强大,可以实现一些比较复杂逻辑功能,类似于JAVA语言中方法; ps:存储过程跟触发器有点类似,都是一组SQL集,但是存储过程是主动调用,且功能比触发器更加强大...给表创建主键,对于没有主键表,查询和索引定义上有一定影响。 避免表字段运行为null,建议设置默认值(例如:int类型设置默认值为0)索引查询,效率立显!...建立索引,最好建立唯一和非空字段,建立太多索引对后期插入、更新都存在一定影响(考虑实际情况来创建)。

73730

经验分享|MySQL分区实战(RANGE)

概述分区概述 MySQL 中, InnoDB存储引擎长期以来一直支持表空间概念。 MySQL 8.0 中,同一个分区表所有分区必须使用相同存储引擎。...但是, MySQL 中创建基于[DATE]、 [TIME]、 或 [DATETIME]或基于使用这些表达式分区方案并不困难 。...重要:要记住——无论您使用哪种分区类型——分区总是创建时自动按顺序编号,从 0. 当新行插入到分区表中时,这些分区号用于标识正确分区。...分区表达式中不允许使用以下结构:存储过程、存储函数、可加载函数或插件。声明变量或用户变量。...分区 InnoDB 表不支持外键全文索引分区表不支持FULLTEXT 索引或搜索。空间具有空间数据类型(例如POINT 或GEOMETRY不能在分区表中使用)。临时表。 临时表不能分区。

33301

Java面试中常问数据库方面问题

利用索引附加,您可以缩小搜索范围,但使用一个具有索引 不同于使用两个单独索引。...where语句中包含分区条件时,可以只扫描一个或多个分区表来提高查询效率;涉及sum和count语句时,也可以多个分区并行处理,最后汇总结果。 分区表更容易维护。...什么是存储过程 简单说,就是一组SQL语句集,功能强大,可以实现一些比较复杂逻辑功能,类似于JAVA语言中方法; ps:存储过程跟触发器有点类似,都是一组SQL集,但是存储过程是主动调用,且功能比触发器更加强大...给表创建主键,对于没有主键表,查询和索引定义上有一定影响。 避免表字段运行为null,建议设置默认值(例如:int类型设置默认值为0)索引查询,效率立显!...建立索引,最好建立唯一和非空字段,建立太多索引对后期插入、更新都存在一定影响(考虑实际情况来创建)。

80020
领券