
Mysql
文章平均质量分 65
Mysql
raoxiaoya
这个作者很懒,什么都没留下…
展开
-
Mysql索引的实现原理,B+Tree,WAL
Mysql索引的实现原理,B+Tree,WAL原创 2024-06-26 14:37:09 · 733 阅读 · 0 评论 -
高性能MySQL(第3版)电子书笔记
高性能MySQL(第3版)电子书笔记原创 2024-06-04 15:12:12 · 997 阅读 · 0 评论 -
mysql添加用户以及设置权限,IP白名单
mysql添加用户以及设置权限原创 2022-08-09 15:52:24 · 3445 阅读 · 0 评论 -
mysql高并发下数据的更新
高并发下数据的更新,应该 update table xxx set num = num - 1 的方式,这种方式可以保证数据的正确性。但是会出现 num 为负数的问题,如果库存为负数,显然是不合理的。于是,需要将 num 字段设置为 无符号整型,这样就不会出现负数了,因为,如果减到负数,就会更新失败。但是这种依然会造成很多无用的更新语句的执行,是不合理的。于是,update table x......原创 2019-06-15 10:05:29 · 2151 阅读 · 0 评论 -
mysql:insert ignore、insert和replace区别
mysql:insert ignore、insert和replace区别原创 2022-06-29 18:03:08 · 245 阅读 · 0 评论 -
mysql中的 ON UPDATE CURRENT_TIMESTAMP
mysql中的 ON UPDATE CURRENT_TIMESTAMP原创 2022-06-22 10:33:58 · 1953 阅读 · 0 评论 -
mysql中的utf8与utf8mb4
一、如何设置utf8mb4mysql中针对字符串类型,在设置charset的时候可以精确到字段。如果只将某个字段设置utf8mb4,那么其他字段不会受影响。如果针对表来设置,那么已经存在的字段依然是utf8,并且会多出utf8的标记,之后所创建的字段才会是utf8mb4。如果针对库来设置,那么已经存在的表依然是utf8,之后所创建的表才会是utf8mb4。除此之外呢,我们在连接数据库的时候,也要指明charset=utf8mb4,否则的话,此连接无法向utf8mb4的字段写入数据,并且读取的时候是原创 2021-11-22 17:03:57 · 16795 阅读 · 1 评论 -
mysql中的NULL值
mysql中的NULL值在实际应用中,mysql的NULL值并没有发现有什么用处,但是却有一些不好的地方,需要来规避。1、NULL和空值NULL表示没有设置任何的值,空值其实是有值的,只是值为空而已。mysql> select length(NULL), length(''), length('1');+--------------+------------+-------------+| length(NULL) | length('') | length('1') |+-------原创 2021-07-08 16:49:16 · 716 阅读 · 0 评论 -
PHP访问MySQL查询超时设置
PHP连接MySQL主要是使用Mysql提供的 libmysqlclient 的客户端库,同时也延伸出来 mysql 和 mysqli 两套PHP的扩展,相对来说 mysqli 比 mysql 更好,更稳定。目前两个客户端扩展库连接超时可以设置选项来操作,比如mysqli:$mysqli->options(MYSQLI_OPT_CONNECT_TIMEOUT, 5);关于 Mysqli 提供的 options 选项可以参考 https://www.php.net/manual/zh/mysq原创 2021-01-20 16:53:56 · 1673 阅读 · 0 评论 -
mysql事务的四个特性和隔离级别
事务的四大特性(ACID)原子性(Atomicity)事务是一个不可分割的单位,事务中的所有SQL等操作要么都发生,要么都不发生。一致性(Consistency)事务发生前和发生后,数据的完整性必须保持一致。隔离性(Isolation)事务和事务之间应该有一定的隔离措施来确保数据安全,在不同的隔离级别下,隔离性有不同的表现。持久性(Durability)一个事务一旦被提交,它对数据库中的数据改变就是永久性的。如果出了错误,事务也不允许撤销,只能通过“补偿性事务”对于 ACD 比较好理解原创 2020-12-31 17:48:03 · 764 阅读 · 0 评论 -
this is incompatible with sql_mode=only_full_group_by mysql
一、原理层面这个错误发生在mysql 5.7 版本及以上版本会出现的问题:mysql 5.7版本默认的sql配置是:sql_mode="ONLY_FULL_GROUP_BY",这个配置严格执行了"SQL92标准"。很多从5.6升级到5.7时,为了语法兼容,大部分都会选择调整sql_mode,使其保持跟5.6一致,为了尽量兼容程序。二、sql层面 在sql执行时,出现该原因: 简单来说就是:输出的结果是叫target list,就是select后面跟着的字段,还有一个地方group by原创 2020-11-14 08:45:00 · 672 阅读 · 0 评论 -
linux下安装mysql57
cd /mydata/datawget https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.24-linux-glibc2.12-x86_64.tar.gztar xzf mysql-5.7.24-linux-glibc2.12-x86_64.tar.gzmv mysql-5.7.24-linux-glibc2.12-x86_64 /usr/local/mysqlmkdir /usr/local/mysql/data查看mysq原创 2020-10-11 11:02:21 · 624 阅读 · 0 评论 -
关于mysql, mysqli, pdo, pdo_mysql, mysqlnd, libmysql的解释
从功能上分类分为驱动和应用层API,驱动就是实现了Mysql客户端协议,用来和mysql server 通讯的程序,比如,当你安装了mysql server后,可以使用它自带的mysql程序来连接并操作数据库。那么别的程序要想和mysql server通讯,也要实现这一协议。比如常用的navicate;同样的,作为php而言也需要有对应的实现,但是mysql开发团队为了大力推广自己,就编写了动态链接库libmysql.dll供所有的编程语言使用,这样大家就不用去研究协议细节了,只需要引入libmysql.原创 2020-08-19 10:11:22 · 1035 阅读 · 0 评论 -
mysql数据库定时备份mysqldump
备份整个数据库原创 2020-08-11 17:42:57 · 1458 阅读 · 0 评论 -
mysql5.7修改密码
方法1alter user 'root'@'localhost' identified by 'xaS@DrxGA#B*fXsq#g';flush privileges;方法2set password for 'root'@'localhost'=password('xaS@DrxGA#B*fXsq#g');flush privileges;方法3update mysql.user set authentication_string=password('xaS@DrxGA#B*fXsq原创 2020-07-30 10:44:25 · 554 阅读 · 0 评论 -
Invalid default value for updatetime mysql报错 sql_mode
mysql报错:Invalid default value for ‘updatetime’ mysql一般是字段设置不合理,比如 updatetime datetime DEFAULT '0000-00-00 00:00:00'正确默认值应该是 1970-01-01 10:00:00但是同样的sql在不同的sql_mode下效果又不一样,而且不同的mysql服务版本设置的默认sql_mo...原创 2020-04-11 15:51:40 · 1821 阅读 · 1 评论 -
laravel配置mysql主从及使用注意
使用了主从,那么延迟就无法避免,在怎么优化也只是降低可能性而已,终究是会有延迟,既然如此,我们在操作数据库的时候就应该尽量规避出现延迟的情况。1、避免在同一个会话中对同一张表先写再读,因为读操作去的是从库,在如此小的时间间隔下从库很有可能没同步过来。2、开启事务之后,此会话的读和写将都去到主库。3、在业务上,重要的业务单独使用一个主从,避免其他业务的干扰而导致重要业务出现明显延迟,比如下单和...原创 2020-04-17 09:55:42 · 2352 阅读 · 0 评论 -
mysql中的inner join, left join, right join
left join(左联接) 返回包括左表中的所有记录和右表中联结字段相等的记录right join(右联接) 返回包括右表中的所有记录和左表中联结字段相等的记录inner join(等值连接) 只返回两个表中联结字段相等的行...原创 2020-04-15 15:14:02 · 581 阅读 · 0 评论 -
sql语句,将null转换成0 mysql
查询出的结果有时候有null,需要处理,可以使用 COALESCE 函数,比如:select u.userid, COALESCE(task, 0) as task1, COALESCE(success, 0) as success1, COALESCE(man, 0) as man1, score from ......原创 2020-04-15 15:12:49 · 2140 阅读 · 0 评论 -
理解mysql中的整型
按取值范围从大到小:bigint, int, mediumint, smallint, tinyint1、bigint8字节最大长度20有符号:-2^63 (-9223372036854775808) 到 2^63-1 (9223372036854775807)无符号:0 - 184467440737095516152、int4字节最大长度10有符号:-2^31 (-214748...原创 2020-03-18 11:36:33 · 1084 阅读 · 1 评论 -
查看MySQL客户端连接情况
当前正在执行的Mysql连接信息SHOW PROCESSLIST;1102 root 192.168.2.157:38994 data Query 0 starting SHOW PROCESSLIST1103 root 192.168.2.157:38998 test123 Sleep 6查看不同状态的链接数show status like 'Threads%';Threads...原创 2020-02-14 16:33:15 · 1869 阅读 · 0 评论 -
win7下安装mysql57
1、下载百度网盘链接:https://pan.baidu.com/s/1EVbDDoGyXyi4dayXvcDAqw提取码:d8982、解压至 D:\mysql-5.7.17-winx64复制 my-default.ini 为 my.ini修改 my.inibasedir = D:\mysql-5.7.17-winx64datadir = D:\mysql-5.7.17-winx6...原创 2020-01-31 14:21:56 · 753 阅读 · 0 评论 -
MySQL查看所有连接的客户端ip
SELECT substring_index(HOST, ':', 1) AS host_name, state, count(*)FROM information_schema. PROCESSLISTGROUP BY state, host_name;原创 2019-12-31 14:18:04 · 1469 阅读 · 0 评论 -
MySQL实现排名并查询指定用户排名功能
本文转自 MySQL实现排名并查询指定用户排名功能表结构:CREATE TABLE test.testsort ( id int(11) NOT NULL AUTO_INCREMENT, uid int(11) DEFAULT 0 COMMENT '用户id', score decimal(10, 2) DEFAULT 0.00 COMMENT '分数', PRIMARY KEY (i...转载 2019-12-06 17:21:53 · 2123 阅读 · 6 评论 -
根据主键随机查找几条记录
SELECT * FROM book_issue_latest ORDER BY RAND() LIMIT 5;0.253sSELECT bookid FROM book_issue_latestWHERE bookid >= (SELECT floor( RAND() * ((SELECT MAX(bookid) FROM book_issue_latest)-(SELECT MI...原创 2019-11-28 18:04:36 · 739 阅读 · 0 评论 -
Mysql 中 explain 详解
explain语法有两种用法:1.EXPLAIN tbl_name2.EXPLAIN [EXTENDED] SELECT select_options为了更好的说明它,我们需要建两张表,下面的语句用于创建一张测试用的订单表:CREATE TABLE `t_order` ( `order_id` int(10) unsigned NOT NULL AUTO_INCREMENT COMM...原创 2019-11-07 18:20:45 · 1037 阅读 · 1 评论 -
MySQL自定义排序ORDER BY FIELD()
MySQL中的排序ORDER BY 除了可以用ASC和DESC,还可以自定义字符串/数字来实现排序。格式如下:SELECT * FROM table ORDER BY FIELD(status,1,2,0);这样子写的话,返回的结果集是按照字段status的1、2、0进行排序的,当然,也可以对字符串进行排序。原理如下:FIELD()函数是将参数1的字段对后续参数进行比较,并返回1、2、...原创 2019-11-07 17:55:46 · 820 阅读 · 0 评论 -
haproxy实现mysql负载均衡
有道云笔记原创 2019-06-27 18:28:58 · 322 阅读 · 0 评论 -
Mysql索引优化之字符串索引string-to-int
Mysql索引优化之字符串索引string-to-int前面提到通过设置字符串前缀索引来优化字符串索引的方式,这里讲一个通过将字符串转换成int的方式做一个替代索引,这也是一种不错的方式,显然int的排序及检索更高效。在数据表中维护一个name_crc32的字段,即CREATE TABLE `test` ( `id` int(11) unsigned NOT NULL AUTO_I...原创 2019-06-20 18:06:21 · 2525 阅读 · 0 评论 -
Mysql索引原理之字符串前缀索引
Mysql索引原理之字符串前缀索引前面已经提到,对于非主键的字符串类型索引,也会按照字段的值建立一套B+Tree的结构,默认是以值的字典序来排的。然后叶子节点挂着的是主键的id,因为它们是同一条记录,然后去主键索引结构中根据id查找出记录。但是如果这个字段的值是比较长的字符串的话,整个索引就比较大,无论是查找还是索引的更新都会不方便,于是MySQL支持了字符串的前缀索引,即只取字符串...原创 2019-06-20 16:30:13 · 3867 阅读 · 1 评论 -
mysql临时表的使用
从表中查出符合条件的id,然后更新其对应的记录,查询与更新为同一个表需要用到临时表。DROP TABLE IF EXISTS `tmp_table`;CREATE TEMPORARY TABLE tmp_table SELECT * FROM dc_agent_info where agent_top_agentid = 11 and agent_login_status = 0;upda...原创 2019-07-14 14:06:17 · 967 阅读 · 0 评论 -
count(1)、count(*) 与 count (列名) 的执行区别
执行效果: 1、count(1) and count(*)当表的数据量大些时,对表作分析之后,使用count(1)还要比使用count(*)用时多了! 从执行计划来看,count(1)和count(*)的效果是一样的。但是在表做过分析之后,count(1)会比count(*)的用时少些(1w以内数据量),不过差不了多少。 如果count(1)是聚索引,id,那肯定是count(1)...原创 2019-10-11 08:40:20 · 764 阅读 · 0 评论 -
mysql中concat, group_concat, concat_ws
1、concat()将多个字符串连接成一个字符串,如果有任何一个参数为null,则返回值为null。concat(str1, str2,…)示例:select concat (id, ‘’, name, '’, score) as info from tt2;2、concat_ws()和concat函数一样,只是可以指定分隔符concat_ws(separator, str1, st...原创 2019-10-08 11:11:34 · 679 阅读 · 0 评论 -
mysql中的去重
关于 distinct 关键字select DISTINCT uid, name from zzzz;其真正的意思是去掉重复的记录,先 select uid, name from zzzz; 然后过滤掉重复记录,保留第一条记录。所以,dinstinct的结果取决于你查找的字段,它并不是过滤掉某个字段。如果我们只需要过滤掉重复的 uid 呢?select uid, name from zz...原创 2019-09-04 10:48:10 · 1127 阅读 · 0 评论 -
用SQL命令查看Mysql数据库大小
用SQL命令查看Mysql数据库大小use information_schema;查询所有数据的大小select concat(round(SUM(data_length)/1024/1024,2),‘MB’) as data from tables;查看指定数据库的大小select concat(round(sum(data_length)/1024/1024,2),‘MB’) as ...原创 2019-07-25 17:39:10 · 157 阅读 · 0 评论 -
InnoDb和MyISAM的区别与优化
InnoDB: 支持事务处理等 不加锁读取 支持外键 支持行锁 不支持FULLTEXT类型的索引 不保存表的具体行数,扫描表来计算有多少行,select count(*)性能差 DELETE 表时,是一行一行的删除 InnoDB 把数据和索引存放在表空间里面 跨平台可直接拷贝使用 InnoDB中必须包含AUTO_INCREMENT类型字段的索引 表格很难被压缩MyISA...原创 2019-07-25 17:35:28 · 134 阅读 · 0 评论