MySQL
MySQL order by 的列有相同的值并且需要分页查询时在order by 之后额外添加一个 order by id desc 条件
避免出现因堆排序的不稳定性导致的数据的重复和丢失 ...
MySQL 创建索引报错 "Specified key was too long; max key length is 767 bytes" 原因
在MySQL中,一般我们会给varchar类型设置255长度,但当我们给该字段设置索引时可能会报以下错误: #1071 - Specified key was too long; max key length is 767 bytes 报错原因: 767字节是 MySQL 版本5.6(以及以前版本)中 InnoDB 表 ...
MySql 定位和分析执行效率的方法
1、通过慢查询日志 slow.log 定位执行效率低的SQL MySQL开启慢查询日志,跑一段时间后拿日志中的慢查询语句进行 explain 分析。 2、通过 explain 分析低效 SQL 语句的执行计划 查询到效率低的 sql 语句后,可以通过 explain 分析低效 SQL 的执行计划。看是否可以基于索引查询 ...
MySql 字段类型说明和推荐
char(M)和varchar(M)的区别: char的长度是不可变的,而varchar的长度是可变的; char(M)定义的列的长度为固定的,M取值可以为0~255之间; varchar(M)定义的列的长度为可变长,M取值可以为0~65535之间; 定义一个char[10]和varchar[10],如果存进去的是‘a ...
高并发系统数据库架构设计
在WEB网站的规模从小到大不断扩展的过程中,数据库的访问压力也不断的增加,数据库的架构也需要动态扩展,在数据库的扩展过程基本上包含如下几步,每一个扩展都可以比上一步骤的部署方式的性能得到数量级的提升。 WEB应用和数据库部署在同一台服务器上 一般的小规模的网站采用这种方式,用户量、数据量、并发访问量都比较小,否则单台服 ...
MySQL 共享锁&排他锁
共享锁(lock in share mode) 允许不同事务之间共享加锁读取,但不允许其它事务修改或者加入排他锁;如果有修改必须等待一个事务提交完成,才可以执行,容易出现死锁 共享锁事务之间的读取 session1: start transaction; select * from test where id = 1 ...
mysql 事务特性以及隔离级别说明
事务: 事务就是针对数据库的一组操作,它可以由一条或者多条SQL语句组成,同一个事务的操作具备同步的特点,如果其中有一条语句不能执行的话(或执行失败),那么所有的语句都不会执行,也就是说,事务中的语句要么都执行,要么都不执行。 注意只有使用innodb引擎的数据库或表才支持事务,MyISAM引擎不支持事务处理 事务特性 ...
MySQL order by limit 分页数据重复或丢失问题说明
mysql 中当 order by 与limit 同时使用,数据可能出现重复或丢失问题 使用了 下面的 方法 发现也没什么问题 Db::name('users') ->where(['is_disabled'=>0]) ->field('id,nickname,team_son+team_gran ...
理解 MySQL 字符集
转自:明月逐人归 平时我们用MySQL,字符编码方式一般是 utf8 或者 utf8mb4,至于MySQL内部是如何处理编码问题的在日常开发中并没有十分关注,遇到最多的问题也无非是表中中文乱码和表情无法存储。对于编码不一致的问题,出问题是在所难免的,我们需要系统地了解下在MySQL内部字符集是如何配置和转化的。 字符集 ...
MySQL 查询中 where in 如何保持顺序
select * from table_name where id in () 如上sql语句,MySQL会自动按主键自增排序,要是按IN中给定的顺序排序,写法如下: SELECT * from `models` where `id` in (26612,26611,26610) order by field(id,2 ...
MySQL 中位置经纬度按距离排序方法
已知数据库中有很多位置经纬度坐标 lng 、 lat,将这些位置按照距已知位置A(坐标 $lng 、$lat)的距离升序排序 SQL 语句 数据量小直接用SQL查询即可 升序排序示例:distance 是计算出来的距离单位是公里 $sql = "select *, ACOS(SIN(( $lat * 3.1415) ...
MySql 各日志配置方法:错误日志、慢查询日志、执行日志
MySQL 错误日志 编辑mysql配置文件/etc/my.cnf,添加如下配置: [mysqld] log-error=/alidata/log/mysql/mysql_error.log 注意对于错误日志文件 /alidata/log/mysql/mysql_error.log 要提前创建好,设置为mysql用 ...