
mysql
文章平均质量分 61
varyall
这个作者很懒,什么都没留下…
展开
-
什么是mysql覆盖索引和索引下推?
与联合索引不同的是,联合索引只能在查询条件中包含索引的前缀部分时才能生效,而索引下推可以在查询条件中包含任意部分的索引时生效。索引下推是指在使用联合索引时,将过滤条件下推到索引层,从而减少回表的次数。例如,假设我们有一个订单表,包含了订单的id,用户id,商品id,价格等字段,我们想要查询所有用户id为1且价格大于1000的订单的商品id和价格,那么我们可以创建一个包含了用户id,价格和商品id的联合索引,这样在扫描索引时就可以先过滤掉不满足用户id为1或价格大于1000的记录,而不需要回表查询订单表。转载 2023-09-18 17:21:10 · 421 阅读 · 0 评论 -
mysql常用的hint(原创)
转自:http://linux.chinaunix.net/techdoc/database/2008/07/29/1021449.shtml对于经常使用Oracle的朋友可能知道,oracle的hint功能种类很多,对于优化sql语句提供了很多方法。同样,在MySQL里,也有类似的hint功能。下面介绍一些常用的。强制索引 FORCE INDEXSELECT * FROM TABLE1 FORCE INDEX (FIELD1) …以上的SQL语句只使用建立在FIELD1上的索引,而不使用..转载 2020-07-11 18:14:28 · 1179 阅读 · 0 评论 -
MySQL数据行溢出的深入理解
一、从常见的报错说起故事的开头我们先来看一个常见的sql报错信息:相信对于这类报错大家一定遇到过很多次了,特别对于OMG这种已内容生产为主要工作核心的BG,在内容线的存储中,数据大一定是个绕不开的话题。这里的数据“大”,远不止存储空间占用多,其中也包括了单个(表)字段存储多、大,数据留存时间长,数据冗余多,冷热数据不明显导致的体量大,访问峰值随着热点变化明显,逻辑处理复杂导致数据存储压...转载 2019-11-24 12:26:11 · 1367 阅读 · 0 评论 -
MySQL行溢出与最大行
#MySQL行溢出与最大行MySQL每个表有4096个列的硬限制,MySQL表的最大行大小限制为65535字节-- innodb_page_sizeshow variables like 'innodb_page_size';-- 文件格式show variables like 'innodb_file_format';-- 行格式show table status like 'ta...转载 2019-11-24 12:18:10 · 431 阅读 · 0 评论 -
MySql表大小、行大小和列大小的限制
参见官网文档:https://dev.mysql.com/doc/refman/5.7/en/column-count-limit.html#row-size-limitshttp://dev.mysql.com/doc/refman/5.7/en/table-size-limit.htmlhttp://dev.mysql.com/doc/refman/5.7/en/column-cou...原创 2019-11-24 01:14:11 · 699 阅读 · 0 评论 -
mysql对表列数和行大小的限制
列计数限制MySQL对于每个表具有4096个列的硬限制,但给定表的有效最大值可能较少。精确的列限制取决于几个因素: 表的最大行大小限制列的数量(可能是大小),因为所有列的总长度不能超过此大小。请参阅行大小限制 单个列的存储要求限制了适合给定最大行大小的列数。某些数据类型的存储要求取决于存储引擎,存储格式和字符集等因素。请参见数据类型存储要求 存储引擎可能会施加限制表列...转载 2019-11-24 01:13:28 · 7068 阅读 · 0 评论 -
mysql中覆盖索引、联合索引、索引下推区别
1、覆盖索引:如果查询条件使用的是普通索引(或是联合索引的最左原则字段),查询结果是联合索引的字段或是主键,不用回表操作,直接返回结果,减少IO磁盘读写读取正行数据2、最左前缀:联合索引的最左 N 个字段,也可以是字符串索引的最左 M 个字符3、联合索引:根据创建联合索引的顺序,以最左原则进行where检索,比如(age,name)以age=1 或 age= 1 and name=‘张三’...转载 2019-11-04 16:38:09 · 1338 阅读 · 0 评论 -
MySQL索引解析(联合索引/最左前缀/覆盖索引/索引下推)
本节内容:1)索引基础2)索引类型(Hash索引、有序数组、B+树)3)索引的几个常见问题 1)联合索引 2)最左前缀原则 3)覆盖索引 4)索引下推1. 索引基础索引对查询的速度有着至关重要的影响,理解索引也是进行数据库性能调优的起点,索引就是为了提高数据查询的效率。索引可以包含一个或多个列的值,如果索引包含多个列的值,则列的顺序也十分重要,因为...转载 2019-11-04 16:33:18 · 235 阅读 · 0 评论 -
Mybatis拦截器实现SQL性能监控
Mybatis拦截器只能拦截四类对象,分别为:Executor、ParameterHandler、StatementHandler、ResultSetHandler,而SQL数据库的操作都是从Executor开始,因此要记录Mybatis数据库操作的耗时,需要拦截Executor类,代码实现如下:/** * 数据库操作性能拦截器,记录耗时 * @Intercepts定义Signature数组,...转载 2018-07-03 20:15:03 · 1600 阅读 · 0 评论 -
MySql范围查找时,索引不生效问题原因
1 问题描述本文对建立好的复合索引进行排序,并取记录中非索引字段,发现索引不生效,例如,有如下表,DDL语句为:CREATE TABLE `employees` ( `emp_no` int(11) NOT NULL, `birth_date` date NOT NULL, `first_name` varchar(14) NOT NULL, `last_name` va...转载 2018-08-30 15:39:34 · 5962 阅读 · 0 评论 -
mysql实现分组查询每个班级的前三名
mysql实现分组查询每个班级的前三名set character_set_server = utf8mb4 ;DROP TABLE IF EXISTS student;CREATE TABLE IF NOT EXISTS student( id varchar(20),-- 编号 class varchar(20),-- 年级 score int-- 分数);d...转载 2018-09-09 20:09:36 · 13608 阅读 · 4 评论 -
MySQL 大表优化方案
来源: manong 链接:https://segmentfault.com/a/1190000006158186 当MySQL单表记录数过大时,增删改查性能都会急剧下降,可以参考以下步骤来优化:单表优化除非单表数据未来会一直不断上涨,否则不要一开始就考虑拆分,拆分会带来逻辑、部署、运维的各种复杂度,一般以整型值为主的表在千万级以下,字符串为主的表在五百万以下是没有太大...转载 2018-09-09 20:50:36 · 243 阅读 · 0 评论 -
oracle 性能优化操作七:索引提高数据分布不均匀时查询效率
索引的选择性低,但数据的分布差异很大时,仍然可以利用索引提高效率。 A、数据分布不均匀的特殊情况下,选择性不高的索引也要创建。 表ServiceInfo中数据量很大,假设有一百万行,其中有一个字段DisposalCourseFlag,取范围为枚举:[0,1,2,3,4,5,6,7 索引的选择性低,但数据的值分布差异很大时,仍然可以利用索引提高效率。A、数据分布不均匀的特殊情况下,选择性...转载 2018-09-26 13:22:19 · 1169 阅读 · 0 评论 -
MySQL数据库提示:Communications link failure,The last packet succe
Last modified:2013-10-08 14:16:47 ********************************************** web网站使用MySQL数据库,今天突然报以下错误: Communications link failure,The last packet successfully received from the ...转载 2018-11-21 11:25:56 · 19194 阅读 · 4 评论 -
Mysql数据库并发插入死锁问题及处理方式
Mysql有很多坑,对Mysql多线程支持这块不是很熟的话就会莫名其妙地发生一些诡异的问题。多线程线程并发操作时最容易产生死锁问题。所以很多大数据的操作一般都采用NoSQL数据库方案来处理,或者读写分离,只需要做好幂等设计即可。如何避免数据库并发1.通过数据库连接池做分发处理:设置何时的数据库连接池参数。如配置:线程池大小,空闲时间,超时时间等。2.永远不要手动开启线程插入数据:不要手动开启线程去...转载 2018-06-20 12:30:26 · 6222 阅读 · 0 评论 -
有趣的insert死锁
昨天看到一个很有意思的死锁,拿来记录下:环境:deadlock on事务隔离级别: read commited表结构:root@test 08:34:01>show create table lingluo\G*************************** 1. row *************************** Table: lingluoCreate...转载 2018-06-26 11:50:18 · 212 阅读 · 0 评论 -
elastic-job详解(一):数据分片
数据分片的目的在于把一个任务分散到不同的机器上运行,既可以解决单机计算能力上限的问题,也能降低部分任务失败对整体系统的影响。elastic-job并不直接提供数据处理的功能,框架只会将分片项分配至各个运行中的作业服务器(其实是Job实例,部署在一台机器上的多个Job实例也能分片),开发者需要自行处理分片项与真实数据的对应关系。框架也预置了一些分片策略:平均分配算法策略,作业名哈希值奇偶数算法策略,...转载 2018-06-07 18:09:12 · 2046 阅读 · 0 评论 -
【分库分表】sharding-jdbc—分片策略
目录StandardShardingStrategyComplexShardingStrategyInlineShardingStrategyHintShardingStrategyNoneShardingStrategy标准分片策略(StandardShardingStrategy)a、PreciseShardingAlgorithm实现:(Precise处理 = 和 in 的路由)b、Prec...转载 2018-06-07 18:08:21 · 4031 阅读 · 0 评论 -
mysql的checkpoint
上一章的结尾我们留下了一个问题,就是在上一章所介绍的模型中,恢复管理器必须要通过全篇扫描整个undolog进行日志恢复,这样做显然是没有太大必要的,因为系统中断肯定是在最后几个事务受到影响,前面的事务应该已经完成commit或者rollback了,不会出现abort的情况,那我们如何知道哪些事务受到了影响呢,如果我们知道了哪一些事务受到了影响,那我们就可以不用全篇进行扫描,而仅仅扫描很小的一部分就...转载 2018-05-31 15:10:45 · 372 阅读 · 0 评论 -
mysql sql 优化
1、避免使用select *,用select id,name之类的代替2、要尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引,order by后面的列不加索引会导致filesort3、尽量不要使用like,或者null 之类的语句,避免全表扫描4、固定长度的会查询的更快,比如char,varchar1、子查询和join使用join代替子查询,子查询就别用了,效率...原创 2018-05-30 17:12:09 · 257 阅读 · 0 评论 -
mysql意向锁的概念和用途
锁的粒度A. 表锁(Table Lock)对整个表加锁,影响标准的所有记录。通常用在DDL语句中,如DELETE TABLE,ALTER TABLE等。B. 行锁(Row Lock)对一行记录加锁,只影响一条记录。通常用在DML语句中,如INSERT, UPDATE, DELETE等。很明显,表锁影响整个表的数据,因此并发性不如行锁好。- 意向锁(Intention Lock)因为表锁覆盖了行锁的...转载 2018-05-29 11:52:04 · 2010 阅读 · 0 评论 -
全量数据同步与数据校验实践——应对百亿量级分库分表异构库迁移
在一家发展中的公司搬砖,正好遇到分库分表,数据迁移的需求比较多,就入坑了。最近有个系统重构,一直做数据重构、迁移、校验等工作,基本能覆盖数据迁移的各个基本点,所以趁机整理一下。数据同步的场景是:数据库拆分、数据冗余、数据表重构。数据重构服务主要包括:全量迁移、全量数据校验、增量数据同步和增量数据校验四个功能。本文主要讲述DB-DB全量迁移的通用解决方案,主要是解决几个问题:NO.1 如何把一个亿量...转载 2018-05-08 01:52:34 · 2310 阅读 · 0 评论 -
MYSQL 索引类型、什么情况下用不上索引、什么情况下不推荐使用索引
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.youkuaiyun.com/kaka1121/article/details/53395628 mysql explain的使用:http://blog.youkuaiyun.com/kaka1121/article/details/53394426 索引类型在数据库表中,对字段建立索引可以大大提高查询速度。假如我们...转载 2018-09-26 13:27:45 · 5185 阅读 · 0 评论 -
多个单列索引执行计划如何选择?
USE tempdbGOIF OBJECT_ID('t') IS NOT NULL DROP TABLE tGOCREATE TABLE t(id INT IDENTITY(1,1) PRIMARY KEY, a INT,b INT,c INT)GO--插入 1000 * 1000 = 1百万条数据;WITH cte AS (SELECT TOP 1000 1 AS id FROM...转载 2018-09-21 15:53:58 · 492 阅读 · 0 评论 -
MySQL单列索引和多列索引
在设计MySql表索引的时候,可能有个问题,就是多个单列索引好,还是设计为多列索引好;下面从不同角度分析下这个问题;1.多个单列索引:定义:即是在表中在需要索引的字段上为每个字段设计一个索引;特点:简单,索引个数多2.多列索引:定义:即是在表中根据查询需求在多个字段上设计一个索引;特点:稍微复杂,需要考虑索引顺序;3.性能上的对比多个单列索引的情况下,MySql在执行查询时,如...转载 2018-09-21 16:12:09 · 4130 阅读 · 0 评论 -
从 BAT 面试回来,我总结了这三类 MySQL 高频面试题(含答案)
前言今互联网行业用的最多就是 MySQL,然而对于面试者,尤其对于寻找 30k 下工作的求职者,很多 MySQL 相关知识点基本都会涉及,所以我总结了一些面试中常问的MySQL知识点,希望对大家有所帮助。废话不多说,直接开启问答面试之旅(答案会在文末进行分享)。MySQL存储与索引有关问题MySQL 有哪些存储引擎啊?都有什么区别? Float、Decimal 存储金额的区别?...转载 2019-07-27 13:43:07 · 779 阅读 · 0 评论 -
varchar和text说不清的那些事
作者:吴炳锡 来源:http://wubx.net/ 联系方式: wubingxi#163.com 转载请注明作/译者和出处,并且不能用于商业用途,违者必究.最近有几个同学问我varchar和text有啥别吗,这个问题,以前说真的也没太多的整理,以前遇到text在设计中就是尽可能的拆到另一个表中,保持主表尽量的瘦小,可以让innodb bp缓存更多的数据。今天借次机会系统整理一下,主要从存...转载 2019-07-26 17:03:24 · 1749 阅读 · 0 评论 -
行式存储和列式存储
行存储和列存储概述目前大数据存储有两种方案可供选择:行存储(Row-Based)和列存储(Column-Based)。业界对两种存储方案有很多争持,集中焦点是:谁能够更有效地处理海量数据,且兼顾安全、可靠、完整性。从目前发展情况看,关系数据库已经不适应这种巨大的存储量和计算要求,基本是淘汰出局。在已知的几种大数据处理软件中,Hadoop的HBase采用列存储,MongoDB是文档型的行存储...转载 2019-06-21 14:50:31 · 1549 阅读 · 0 评论 -
MySQL大数据量分页查询方法及其优化
原文地址:http://www.cnblogs.com/geningchao/p/6649907.html---方法1: 直接使用数据库提供的SQL语句---语句样式: MySQL中,可用如下方法: SELECT * FROM 表名称 LIMIT M,N---适应场景: 适用于数据量较少的情况(元组百/千级)---原因/缺点: 全表扫描,速度会很慢 且 有的数据库结果集返回不稳定(如某次返回...转载 2019-04-09 19:28:12 · 768 阅读 · 0 评论 -
最易懂的数据库异地多活方案
前言随着业务发展越来越快,数据量越来越多,用户也越来越多,业务出现故障的几率也越来越大,而可用性是衡量一个系统的关键指标,application 由于是无状态的,可用性很好保证,当一个应用挂掉,直接切到另一个即可,最关键的是数据库的高可用,则是最复杂的。今天我们将尝试探讨数据库的异地多活高可用。注意,我们讨论的都是超大数据量(50TB 级别)的数据库。第一种直接上分布式数据库,目前...转载 2019-04-15 17:47:26 · 1052 阅读 · 0 评论 -
linux应用之mysql8安装
1、安装前工作在安装前需要确定现在这个系统有没有 mysql,如果有那么必须卸载 (在 centos7 自带的是 mariaDb 数据库,所以第一步是卸载数据库)。 #查看mariadb数据库:rpm -qa | grep mariadb #卸载mariadb数据库:rpm -e --nodeps mariadb文件名 #查看 mysql 数据库:rpm -qa | gre...转载 2019-03-23 17:37:38 · 294 阅读 · 0 评论 -
行链接和行迁移
行链接(Row chaining) 与行迁移(Row Migration)当一行的数据过长而不能插入一个单个数据块中时,可能发生两种事情:行链接(row chaining)或行迁移(row migration)。行链接当第一次插入行时,由于行太长而不能容纳在一个数据块中时,就会发生行链接。在这种情况下,oracle会使用与该块链接的一块或多块数据块来容纳该行的数据。行连接经常在插入比较大的行...转载 2019-02-20 21:31:19 · 333 阅读 · 0 评论 -
联合索引在B+树上的结构
前言最近在学习MySQL的存储引擎和索引的知识。看了许多篇介绍MyISAM和InnoDB的索引的例子,都能理解。像这张索引图:PS:该图来自大神张洋的《MySQL索引背后的数据结构及算法原理》一文。但许多文章讲述的都是单列索引,我很好奇联合索引对应的结构图是怎样的。疑惑:联合索引的结构是怎样的比方说联合索引 (col1, col2,col3),我知道在逻辑上是先按照col1...转载 2019-02-28 14:18:42 · 654 阅读 · 0 评论 -
联合索引最左匹配原则的成因+索引为什么不是越多越好
联合索引多列组成的索引最左匹配原则假设我们有两列a,b,a和b是联合索引,他的顺序是a,b,我们在where语句中调用a=? and b=?的时候就会走联合索引,如果调用where a = ?的时候也会走索引,但是当我们使用where b = ?的时候就不会走这个联合索引成因:mysql创建复合索引的规则是首先会对复合索引的最左边,也就是索引中的第一个字段进行排序,在第一个字段...转载 2019-02-28 13:40:46 · 1497 阅读 · 0 评论 -
Mysql 存在既更新,不存在就添加(sql语句)
版权声明:本文为勇哥原创文章,转载请注明出处哦!!! https://blog.youkuaiyun.com/woshihaiyong168/article/details/75082668INSERT 语句的一部分,如果指定 ON DUPLICATE KEY UPDATE ,并且插入行后会导致在一个UNIQUE索引或PRIMARY KEY中出现重复值,则在出现重复值的行执行UPDATE,如果不会...转载 2018-11-16 17:17:12 · 3434 阅读 · 0 评论 -
Communications link failure,The last packet successfully received from the server was × millisecon..
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.youkuaiyun.com/liuxiao723846/article/details/45534885 关于MySQL连接超时问题,估计很多人都遇到过:大致情形都是这样,开发测试时程序都是正常的,一到第二天就出先莫名错误,比如在我的项目中使用了多数据源,其中有一个数据源仅仅供查询使用,所以使用次数很少。当...转载 2018-11-21 11:25:20 · 10569 阅读 · 2 评论 -
在 SQL 里描述数据分布情况的时候,有 Cardinality 和 Selectivity 两个概念,有什么区别?
What is the difference between cardinality and selectivity?In SQL, cardinality refers to the number of unique values in particular column. So, cardinality is a numeric value that applies to a specif...转载 2018-11-08 00:07:27 · 1372 阅读 · 0 评论 -
MYSQL-datatime和timestamp的区别
mysql中有三种日期类型:date(年-月-日) create table test(hiredate date);datetime(日期时间类型) create table test(hiredate datetime)timestamp(邮戳类型,保存年-月-日 时-分-秒)create table test(hiredate timestamp)datetime 和time...转载 2018-10-12 15:00:51 · 2721 阅读 · 0 评论 -
mysql中geometry类型的简单使用(搜索附近的人)
mysql中geometry类型的简单使用编写本文的目的:让和两天前的我一样的初学者,能够更快的使用geometry类型存储空间点数据也是为了自己加深印象,更熟练的使用geometry类型建表脚本CREATE TABLE `z_gis` ( `id` varchar(45) NOT NULL, `name` varchar(10) NOT NULL COMMENT '姓名', `gis...转载 2018-05-14 13:16:03 · 6475 阅读 · 0 评论 -
跟据经纬度实现附近搜索Java实现
http://www.open-open.com/lib/view/open1421650750328.htmlmysql空间数据库、矩形算法、geohashgeo算法参考文档:http://blog.youkuaiyun.com/wangxiafghj/article/details/9014363geohash 算法原理及实现方式http://blog.charlee.li/geohash-intro/...转载 2018-05-14 13:12:33 · 1252 阅读 · 0 评论