mysql
文章平均质量分 65
筑梦悠然
The running of life depends on the perseverance in the journey, rather than momentary outburst.
人生的奔跑,不在于瞬间的爆发,而取决于途中的坚持!
展开
-
mysql跨表分页查询
业务上会出现这样一种场景,A和B两张表,先从A表查,A表查完,再从B表查询。acount和bCount分别代表:两表的数据总数,pageNo和pageSize分别代表:当前查询第几页和每页条数needSize和diff分别代表:needSize=pageNo*pageSize,diff=needSize-aCountif (diff <= 0) {//全从A表取 offset = (pageNo-1)*pageSize; select * from A offset {of...原创 2021-12-02 17:14:44 · 1779 阅读 · 0 评论 -
分库|分表|分区|分片的最全指南
读压力大时 读写分离、一主多备 写压力大时 分库分表 IO瓶颈 分库和垂直分表 CPU瓶颈 SQL优化和水平分表 分库 分库:当一个库中的表过多(单机容量不够),访问量太大(单个实例无法支持)时候,可以分库 水平分库:一般是在垂直拆分后进行;将存储的同张表的数据划分到不同的库中(压力分摊到不同的库,如:订单、用户);问题:数据路由 垂直分库:将系统中不存关联关系或不同业务的...转载 2021-01-27 10:19:04 · 1071 阅读 · 0 评论 -
mysql count(*)使用索引和成本计算
目录一、索引成本计算1、IO成本2、CPU成本二、cout(*)索引---选成本最小的辅助索引总结一、索引成本计算在有多个索引的情况下, 在查询数据前,MySQL 会选择成本最小原则来选择使用对应的索引,这里的成本主要包含两个方面。1、IO成本即从磁盘把数据加载到内存的成本,默认情况下,读取数据页的 IO 成本是 1,MySQL 是以页的形式读取数据的,即当用到某个数据时,并不会只读取这个数据,而会把这个数据相邻的数据也一起读到内存中,这就是有名的程序局部性原理,所以 (转载 2020-08-24 23:07:46 · 2511 阅读 · 2 评论 -
【订单号存储】最硬核实用的分库分表操作指南
两种方案分库分表:按照用户id来切分(推荐)、按照订单号来切分。方案一、按照用户id打散订单数据(推荐)(2.1)某个范围的uid订单到哪些库。0到2千万uid,对应的订单数据到a库、a表。2千万到4千万对应的订单到b库。---缺:某个范围内的用户,下单量比较多,那么造成这个库的压力特别大。(2.2)使用uid取模运算(推荐)库名称计算【用户id末尾4位 mod 32】:对用...转载 2020-03-28 19:11:54 · 1569 阅读 · 0 评论 -
csrf与xss攻击的详解与区别
一、csrf攻击1.CSRF的基本概念、缩写、全称:CSRF(Cross-site request forgery):跨站请求伪造。2.CSRF的攻击原理用户是网站A的注册用户,且登录进去,于是网站A就给用户下发cookie。从上图可以看出,要完成一次CSRF攻击,受害者必须满足两个必要的条件:(1)登录受信任网站A,并在本地生成Cookie。(如果用户没有登录网站A,那么网站B在诱导的...转载 2020-02-02 19:47:08 · 17372 阅读 · 3 评论 -
数据库四大特性+四种隔离+详细操作
一、数据库四大特性简称 特性 说明 A 原子性 整个事务中的所有操作要么全部成功执行,要么全部失败后回滚到开始处 C 一致性 数据库总是应该从一个一致性状态转为另一个一致性状态 I 隔离性 一个事务所做出的操作在提交之前,是否能为其它事务可见;隔离有有四个级别,隔离性最低,安全性最低,并发性最高,隔离性最高,安全性最高,但是并发性就最...转载 2020-01-30 16:04:20 · 690 阅读 · 0 评论 -
数据库存储引擎innodb与myisam
一、innodb与myisam的区别与取舍、innodb引擎的4大特性如下是两者的索引图:两者的相同点:两者都是mysql的常用引擎;两者的索引都是B+树两者的区别:事务:InnoDB支持,MyISAM不支持外键:InnoDB支持,MyISAM不支持索引类型:InnoDB是聚簇索引(叶子节点存数据),MyISAM是非聚簇索引(叶子节点存指针)插入速度:MyISAM批量插入速...转载 2020-01-29 19:41:10 · 446 阅读 · 0 评论 -
mysql查看+创建索引
查看索引:show index from 表名工具:mysql数据库创建一个user的表里边的字段建立索引:(1)普通索引-add indexalter table `table_name` add index index_name (`column`);(2)多列索引-add indexalter table `table_name` add index index_name...原创 2019-08-05 21:08:11 · 189 阅读 · 0 评论 -
mysql update致命性更新的回滚方式
执行update语句的时候,有的时候一个不小心,where条件没写好,本想更新几条记录,但是灾难性地更新了整个表,而且想恢复,恢复代价极高。这种灾难性的更新,一旦发生在生产环境,那将是灾难性后果。轻则删库跑路被开除,重则吃不了兜着走,简直是“恐怖”性,“灾难”性事件!一、下面列举一些常见的容易写错的写法(1)update test set is_del=1 where 13456;--(...原创 2019-07-30 23:36:51 · 5866 阅读 · 0 评论 -
Mysql 的utf8编码 PK utf8mb4编码
一、Unicode 字符集包含了上百万个字符二、编码方式(1)UTF-32编码:最简单的编码,每个字符使用 32 位。缺点:这样做最简单,因为一直以来,计算机将 32 位视为数字,而计算机最在行的就是处理数字。但问题是,这样太浪费空间了。希望:UTF-8 可以节省空间,在 UTF-8 中,①字符“C”只需要 8 位。②一些不常用的字符,比如“”需要 32 位。③其...转载 2019-07-19 17:02:44 · 584 阅读 · 0 评论 -
MySQL中IS NULL、IS NOT NULL、!=真的不能用索引吗
知道从什么时候开始,网上流传着这么一个说法:MySQL的WHERE子句中包含 IS NULL、IS NOT NULL、!= 这些条件时便不能使用索引查询,只能使用全表扫描。这种说法愈演愈烈,甚至被很多同学奉为真理。咱啥话也不说,举个例子。假如我们有个表s1,结构如下:CREATE TABLE s1 ( id INT NOT NULL AUTO_INCREMENT, ...转载 2019-07-19 16:50:48 · 364 阅读 · 0 评论 -
mysql 索引在in、between、is_null等的使用的有效性判断
一、索引对哪个有效?where,order,group,join字段二、口诀全值匹配我最爱,最左前缀要遵守;带头大哥不能死,中间兄弟不能断;索引列上少计算,范围之后全失效;like百分写最后,覆盖索引不写星;join连接类型同,order条件非表达式;不等空值or和'0/1',索引失效要少用。口诀示例:1、https://blog.csdn.net/wuseyukui...转载 2019-06-21 14:19:37 · 14752 阅读 · 3 评论 -
SQL执行效率提高了10000000倍的实例剖析
转载:https://mp.weixin.qq.com/s/82UfmL4hYSZ1nUhnmLQr3A场景我用的数据库是mysql5.6,下面简单的介绍下场景课程表:createtableCourse(c_idintPRIMARYKEY,namevarchar(10))数据100条学生表:createtableStud...转载 2019-06-20 11:00:12 · 230 阅读 · 3 评论 -
多个单列索引和联合索引的区别详解
背景:为了提高数据库效率,建索引是家常便饭;那么当查询条件为2个及以上时,我们是创建多个单列索引还是创建一个联合索引好呢?他们之间的区别是什么?哪个效率高呢?我在这里详细测试分析下。一、联合索引测试注:Mysql版本为 5.7.20创建测试表(表记录数为63188):CREATE TABLE `t_mobilesms_11` ( `id` bigint(20) NOT NUL...转载 2019-06-10 01:27:53 · 289 阅读 · 0 评论 -
MySQL 字符串截取函数
从(左/右)开始截取字符串left(str, len),即:left(被截取字符串, 截取长度)right(str, len),即:right(被截取字符串, 截取长度)//截取特定长度的字符串,注意mysql下表从1开始substring(str, pos),即:substring(被截取字符串, 从第几位开始截取)substring(str, pos, len),即:substrin...原创 2019-05-24 20:20:39 · 3801 阅读 · 0 评论 -
mysql各种数据类型(int,text,time)的范围
数字类型 字节数 位数 最小有符号 最大有符号 最小无符号 最大无符号 tinyint 1 8位 -2^7=-128 2^7-1=127 0 2^8-1=255 smallint 2 16位 -2^15=32768 2^15-1=32767 0 2^16-1=65535 medi...原创 2017-08-17 15:43:08 · 1088 阅读 · 0 评论 -
oracle数据库分页查询(带排序)
海量数据查询(推荐,亲测有效)//查询淘宝销量第10高到第20高的店家select * from (select a.*,rownum r from(select * from user order by sales desc) awhere rownum) b where r.rownum>=10注意:原创 2018-03-16 07:25:10 · 772 阅读 · 0 评论 -
[面试]常考数据库优化(分库分表+索引+优化DB+缓存)
1、分库分表(当数据记录达到百万级,如一年的客户销售表累计200W条记录)2、添加索引(索引不能直接修改,只能删除后重新建)create index idxname on table user(id);drop index idxname;MySQL单列索引和组合索引(联合索引)的区别详解一个面试题:怎么加速这个where a=’1′ 和 where a=’1′ and b=’2′,答案:a加索引...原创 2017-11-01 12:17:38 · 801 阅读 · 1 评论 -
[面试]mysql主从复制原理,3三种读写分离的方式,mysql主从复制和读写分离
主从复制(Master-Slave)的方式来同步数据,再通过读写分离(MySQL-Proxy)来提升数据库的并发负载能力一、MySQL主从复制场景描述:主数据库服务器:192.168.10.130,MySQL已经安装,并且无应用数据。从数据库服务器:192.168.10.131,MySQL已经安装,并且无应用数据。(VMWare克隆虚拟主机)2.1 主服务器上进行的操作转载 2017-11-16 17:34:09 · 2104 阅读 · 0 评论 -
优化MySQL数据库的方法
1、选取最适用的字段属性,尽可能减少定义字段长度,尽量把字段设置NOT NULL,例如’省份,性别’,最好设置为ENUM 2、使用连接(JOIN)来代替子查询: a.删除没有任何订单客户:DELETE FROM customerinfo WHERE customerid NOT in(SELECT customerid FROM orderinfo) b.提取所有没有订单客户:SE转载 2017-02-21 15:01:47 · 275 阅读 · 0 评论 -
常见sql语句集锦
一、创建与删除1、创建数据库CREATE DATABASE database-name2、删除数据库drop database dbname3、备份sql server--- 创建 备份数据的 deviceUSE masterEXEC sp_addumpdevice 'disk', 'testBack', 'c:\mssql7backup\MyNwind_1.dat'---原创 2017-06-05 14:58:30 · 516 阅读 · 0 评论 -
mysql命令行的导入导出sql,txt,excel(都在linux或windows命令行操作)
Mysql导入导出sql,txt,excel(都在linux或windows命令行操作)首先我们通过命令行进入到mysql安装目录的bin目录下,比如我输入的命令行为: d:cd D:/wamp/bin/mysql/mysql5.6.17/bin 一、导入导出sqlmysql采用(linux或者windows)命令行方式,导入导出数据库,数据表,字段原创 2017-06-27 17:15:35 · 37472 阅读 · 3 评论 -
数据库SQL优化大总结1之- 百万级数据库优化方案
转自:https://mp.weixin.qq.com/s?__biz=MzIxMjg4NDU1NA==&mid=2247483684&idx=1&sn=f5abc60e696b2063e43cd9ccb40df101&chksm=97be0c01a0c98517029ff9aa280b398ab5c81fa1fcfe0e746222a3bfe75396d9eea1e249af38&mpshare转载 2017-06-06 09:55:51 · 58994 阅读 · 10 评论 -
tinyint(1)与tinyint(3),int(1)与int(3),tiny(1)与int(1)区别
tinyint一个字节 smallint 两个字节 MEDIUMINT三个字节 int四个字节不管 tinyint 后面的数字是多少,它存储长度=2^(1字节)=2^8,即存储范围是 -2^7 到 2^7 - 1。不管 int 后面的数字是多少,它存储长度=2^(4字节)=2^32,即存储范围是 -2^31 到 2^31 - 1。所以,tinyint(1)与tiny...原创 2017-05-25 15:43:27 · 35128 阅读 · 5 评论 -
mysql授权主机+授权用户
一、授权用户1、以管理员身份登陆进入数据库mysql -u root -p输入密码2、新建用户名:zs 密码:1234 的mysql用户insert into mysql.user(Host,User,Password) values("localhost","zs",password("1234"));flush privileges; //刷新权限表...原创 2018-03-17 18:27:45 · 4586 阅读 · 2 评论 -
mysql的锁机制(行锁表锁+悲观锁乐观锁)+死锁的产生与避免(以Innodb引擎为例)
一、mysql的锁机制(1)悲观锁乐观锁(面试必备)行锁(悲观锁和乐观锁)解决,建议使用乐观锁,乐观锁更适合解决冲突概率极小的情况,而悲观锁则适合解决并发竞争激烈的情况(2)行锁表锁InnoDB实现了两种类型的行锁:共享锁(S):允许一个事务去读一行,阻止其他事务获得相同的数据集的排他锁。(我读的时候,你可以读,但是不能写。)排他锁(X):允许获得排他锁的事务更新数据,...转载 2018-03-22 15:01:07 · 2472 阅读 · 0 评论 -
created_at比实际时间少8小时的原因及解决
今天在插入表的时候,遇到一个奇怪的现象。created_at和updated_at插入的时间戳总比实际时间少8小时,这里的这两个值我是设置自动插入当前时间的刚开始以为是mysql时区的问题:根据这个修改mysql配置文件,加上default-time_zone = '+8:00'问题依然存在,不是mysql的原因我在命令行输入:$ dateMon Jul 30 02:28:55 C...原创 2018-07-30 02:47:49 · 3448 阅读 · 0 评论 -
mysql慢查询 + explain使用及返回的参数详解
一、mysql慢查询(1)慢查询参数说明slow_query_log 慢查询开启状态slow_query_log_file 慢查询日志存放的位置(这个目录需要MySQL的运行帐号的可写权限,一般设置为MySQL的数据存放目录)long_query_time 查询超过多少秒才记录log_queries_not_using_indexes 设置为ON时,可以捕获到所有未使用索引的SQL语句(2)查看慢...转载 2018-06-08 16:58:49 · 767 阅读 · 0 评论 -
MySQL取消密码强度验证功能 + 创建用户并授权
1、取消密码强度验证功能sudo find / -name my.cnf #查找mysql的配置文件位置vi /usr/etc/my.cnf 在末尾添加如下内容plugin-load=validate_password.so validate-password=OFF 然后重启mysqlMac: brew services restart mysql Li原创 2018-04-20 12:15:52 · 743 阅读 · 0 评论 -
sql攻击的总体思路+攻击实例+防止方法
一、SQL注入攻击的总体思路1.寻找到SQL注入的位置2.判断服务器类型和后台数据库类型3.针对不同的服务器和数据库特点进行SQL注入攻击二、SQL注入攻击实例比如在一个登录界面,要求输入用户名和密码:可以这样输入实现免帐号登录:用户名: 'or 1 = 1 --密 码:点登陆,如若没有做特殊处理,那么这个非法用户就很得意的登陆进去了.(当然现在的有些语...转载 2018-03-31 23:17:09 · 591 阅读 · 0 评论 -
Mysql执行顺序&Join原理(360面试题)
left join :左连接,返回左表中所有的记录以及右表中连接字段相等的记录。right join :右连接,返回右表中所有的记录以及左表中连接字段相等的记录。join(inner join): 内连接,又叫等值连接,只返回两个表中连接字段相等的行。full join:外连接,返回两个表中的行:left join + right join。cross join:结果是笛卡尔积,就是第一个表的行数...转载 2018-03-21 19:20:49 · 1018 阅读 · 0 评论 -
mysql索引原理B+树 | 聚簇索引 | 覆盖索引(360面试题)
索引原理索引的本质就是数据结构,采用B树或其变种B+树作为索引结构,以空间换时间。 索引的原理大致概括为以空间换时间,数据库在未添加索引的时候进行查询默认的是进行全量搜索,也就是进行全局扫描,有多少条数据就要进行多少次查询,然后找到相匹配的数据就把他放到结果集中,直到全表扫描完。而建立索引之后,会将建立索引的KEY值放在一个n叉树上(BTree)。因为B树的特点就是适合在磁盘等直接存储设备上组织动...转载 2018-03-20 16:22:19 · 1187 阅读 · 0 评论 -
数据库连接和相关操作
<?phpclass DbMysql { public $conn;//$conn是类属性,用public修饰,不用public修饰是普通变量,类属性是对类变量的一种封装,此属性只给本类及其子类使用,所以,类属性=类变量(封装在类里的的变量) function __construct() { $this->conn = new mysqli("localhost"原创 2017-03-09 09:11:10 · 226 阅读 · 0 评论 -
数据库面试题目(mysql、nosql)
一、索引聚集索引、非聚集索引都是B+树。前者B+树叶子节点包含数据,后者叶子节点包含数据地址聚集索引优点:提升IO密集负载性能;缺点:插入代价高索引缺点:维护索引耗时;占用空间大建索引须知:建在where,group by,排序等列上;不建在性别等少数类别的列上建索引不一定加速:索引没有查询所需字段一年后DB变慢了:答题方向是cpu、磁盘、内存二、Nosql1、为什么有Nosql?增加字段需要--...转载 2018-03-22 15:32:03 · 5114 阅读 · 0 评论 -
mysql修改编码
一、常见操作//1、查看数据库编码格式mysql> show variables like 'character_set_database'//2、查看数据表的编码格式mysql> show create table ;//3、创建数据库时指定数据库的字符集mysql>create database character set utf8;//4、创建数据表时指定数据表的编码格式原创 2017-05-23 11:51:59 · 264 阅读 · 0 评论