Mysql
LY071
这个作者很懒,什么都没留下…
展开
-
myisam和innodb的区别
差异 MyISAM InnoDB 存储结构 每张表被存放在三个文件: frm – 表格定义 MYD(MYData) – 数据文件 MYI(MYIndex) – 索引文件 包含文件: .frm 表结构文件 .ibd 索引和数据文件 表数据和索引都保存在同一个数据文件中,InnoDB表的大小只受限于操作系统文件的大小,一般为2GB ...原创 2021-07-08 07:53:21 · 95 阅读 · 0 评论 -
MySQL生成大量测试数据方法
https://blog.csdn.net/weixin_41890833/article/details/102548279原创 2021-06-17 18:37:07 · 142 阅读 · 0 评论 -
页面分页的显示,在大数据量的情况下,怎么解决count(*)全表扫描的问题
高性能mysql:覆盖索引或者创建汇总表或者调整业务架构对于大表的后台,都有默认条件,默认7天之内。但如果查七天之前的就比较头痛原创 2021-06-16 10:55:10 · 522 阅读 · 0 评论 -
大数据量的情况下,怎么优化limit 10000,20这种扫描大量数据的情况
select * from test a inner join (select id from test where val=4 limit 300000,5) b on a.id=b.id;https://zhuanlan.zhihu.com/p/214377808原创 2021-06-15 18:49:52 · 521 阅读 · 1 评论 -
explain的常用字段解析
explain的常用字段解析Typenull > system > const(主键索引扫描) > eq_ref(表中只有一条记录与之匹配,常见于主键索引和唯一索引) > ref(非唯一索引扫描) > ref_or_null > index > allconst 通过索引一次就找到了,const用于primary key或unique索引的比较,因为只匹配一行数据,所以很快,如主键至于where中,mysql会将查询置换成一个常量eq_ref 常见于主键索引原创 2021-06-09 11:00:00 · 540 阅读 · 0 评论 -
可重复读隔离级别-幻读
非唯一索引列num示例1:事务1 可重复读&事务手动提交事务2 可重复读&事务手动提交start transaction;start transaction;select * intest where num=5 for update;(结果只有一条)insert into intest set name=‘teat’, num=5;(此处会阻塞住)select * intest where num=5 for update;(结果仍只原创 2021-06-09 10:18:56 · 667 阅读 · 0 评论 -
一张图彻底搞懂MySQL的 explain
https://segmentfault.com/a/1190000021458117?utm_source=tag-newest原创 2021-06-02 18:16:24 · 103 阅读 · 0 评论 -
mysql 悲观锁与乐观锁的理解
https://www.cnblogs.com/jkko123/p/10451240.html原创 2021-05-26 12:27:54 · 60 阅读 · 0 评论 -
mysql Innodb锁机制:Next-Key Lock
https://www.cnblogs.com/zhoujinyi/p/3435982.html原创 2021-05-25 15:43:11 · 146 阅读 · 0 评论 -
MySQL的可重复读、幻读及实现原理
https://blog.csdn.net/weixin_44273302/article/details/113764174文章理解重点内容:快照读和当前读出现了上面的情况我们需要知道为什么会出现这种情况。在查阅了一些资料后发现在RR级别中,通过MVCC机制,虽然让数据变得可重复读,但我们读到的数据可能是历史数据,不是数据库最新的数据。这种读取历史数据的方式,我们叫它快照读 (snapshot read),而读取数据库最新版本数据的方式,叫当前读 (current read)。select 快照读原创 2021-05-25 14:11:59 · 255 阅读 · 0 评论 -
为什么Mysql 在覆盖索引下的like ‘%xxx%’查询能使用到索引,原理是什么?
https://segmentfault.com/q/1010000022763847原创 2021-01-07 12:20:21 · 919 阅读 · 0 评论 -
mysql索引优化
优化索引的一些建议禁止在更新十分频繁、区分度不高的属性上建立索引。更新会变更B+树,更新频繁的字段建立索引会大大降低数据库性能。“性别”这种区分度不大的属性,建立索引是没有什么意义的,不能有效过滤数据,性能与全表扫描类似。建立组合索引,必须把区分度高的字段放在前面。...原创 2021-01-07 11:55:43 · 91 阅读 · 0 评论 -
如何利用工具,迅猛定位低效SQL? | 1分钟系列
https://mp.weixin.qq.com/s?__biz=MjM5ODYxMDA5OQ==&mid=2651962587&idx=1&sn=d197aea0090ce93b156e0774c6dc3019&chksm=bd2d09078a5a801138922fb5f2b9bb7fdaace7e594d55f45ce4b3fc25cbb973bbc9b2deb2c31&scene=21#wechat_redirect原创 2021-01-06 12:26:57 · 68 阅读 · 0 评论 -
mysql 前缀索引
https://www.cnblogs.com/balfish/p/9003794.html原创 2020-07-29 15:29:45 · 107 阅读 · 0 评论 -
Centos下安装及启动mysql遇到的问题及解决的办法
1、安装完成后无法启动mysqld服务解决:查看/var/log/mysql/mysqld.log,根据提示解决error,从解决经过来看,大部分都是权限不够的问题,因此给没有读写权限的文件增加权限即可2、登录mysql时,提示access denied 的问题解决:首先找到mysql的配置文件my.cnf,在“[mysqld]”下增加一行配置“skip-grant-tables”,意思是跳过权限检查3、登录mysql后修改root的登录密码(mysql8)解决:步骤1:flush privile原创 2020-07-23 19:16:03 · 375 阅读 · 0 评论 -
MYSQL主从备份+tp5读写分离
转载:https://blog.csdn.net/q18771811872/article/details/88636181原创 2020-07-13 18:43:20 · 131 阅读 · 0 评论 -
为什么在tp5.1中开启事务后,事务不能正确回滚
tp5.1中开启mysql事务的方式之一Db::startTrans()try{ //业务代码 //在这里,不能使用助手函数db(''),只能使用Db::name(''),否则事务不能够正常回滚 Db::commit()}catch(\Exception $e){ Db::rollback();}原创 2020-06-17 16:00:12 · 1222 阅读 · 1 评论 -
mysql覆盖索引与回表
https://www.jianshu.com/p/8991cbca3854原创 2020-05-29 10:15:39 · 138 阅读 · 0 评论 -
为什么要建联合索引?
为什么要使用联合索引减少开销。建一个联合索引(col1,col2,col3),实际相当于建了(col1),(col1,col2),(col1,col2,col3)三个索引。每多一个索引,都会增加写操作的开销和磁盘空间的开销。对于大量数据的表,使用联合索引会大大的减少开销!覆盖索引。对联合索引(col1,col2,col3),如果有如下的sql: select col1,col2,col3 from test where col1=1 and col2=2。那么MySQL可以直接通过遍历索引取得数据,而无原创 2020-05-29 10:14:44 · 1910 阅读 · 0 评论 -
单表查询时,使用group by产生了临时表的解决
单表查询时,在where条件的字段中建了索引,group by字段中也建了索引,但是在group by时却产生了临时表```sqlSELECT ehuseridFROM x2_examhistoryWHERE ehexamid = 10GROUP BY ehuserid DESCORDER BY NULLexplain结果如下![在这里插入图片描述](https://...原创 2020-04-28 17:22:29 · 3362 阅读 · 1 评论 -
mysql优化的相关文章
https://www.cnblogs.com/jpfss/p/9166977.htmlhttps://blog.huoding.com/2013/06/04/261原创 2020-04-20 09:32:39 · 111 阅读 · 0 评论 -
php对表单提交的字符串过滤处理
[php]//过滤参数function addslashes_deep(KaTeX parse error: Expected '}', got 'EOF' at end of input: … if (empty(value)){return KaTeX parse error: Expected 'EOF', got '}' at position 12: value; ...原创 2020-04-15 10:20:29 · 454 阅读 · 0 评论 -
MySQL MERGE存储引擎
转载:https://www.cnblogs.com/hjw-zq/p/9804001.html写这篇文章,主要是因为面试的时候,面试官问我怎样统计所有的分表(假设按天分表)数据,我说了两种方案,第一种是最笨的方法,就是循环查询所有表数据(肯定不能采用);第二种方法是,利用中间件,每天定时把前一天的表数据查询出来存到mongodb,最后只查询mongodb。然后面试官问我还有没有比这个更好的方案...原创 2020-04-15 09:45:14 · 295 阅读 · 0 评论 -
mysql 什么时候分区 什么时候分表
转载:https://blog.csdn.net/qq_18863573/article/details/102628905一,什么是mysql分表,分区什么是分表,从表面意思上看呢,就是把一张表分成N多个小表,具体请看mysql分表的3种方法什么是分区,分区呢就是把一张表的数据分成N多个区块,这些区块可以在同一个磁盘上,也可以在不同的磁盘上一,先说一下为什么要分表当一张的数据达到几百万...原创 2020-04-15 09:42:23 · 446 阅读 · 0 评论 -
MySQL 对于千万级的大表要怎么优化?(知乎)
https://www.zhihu.com/question/19719997/answer/549041957原创 2020-03-29 22:26:57 · 180 阅读 · 0 评论 -
mysql分区与分表的区别
分区分区就是把一个数据表的文件和索引分散存储在不同的物理文件中。mysql支持的分区类型包括Range、List、Hash、Key,其中Range比较常用:RANGE分区:基于属于一个给定连续区间的列值,把多行分配给分区。LIST分区:类似于按RANGE分区,区别在于LIST分区是基于列值匹配一个离散值集合中的某个值来进行选择。HASH分区:基于用户定义的表达式的返回值来进行选择的分区,...原创 2020-03-29 22:14:22 · 488 阅读 · 0 评论 -
【面试现场】为什么MySQL数据库要用B+树存储索引?
小史是一个应届生,虽然学的是电子专业,但是自己业余时间看了很多互联网与编程方面的书,一心想进BAT互联网公司。话说两个多月前,小史通过了A厂的一面,两个多月后的今天,小史终于等到了A厂的二面。简单的自我介绍后,面试官看了看小史的简历,开始发问了。【面试现场】小史:没问题,这个项目前端用的react+webpack,后端用的nginx+SpringBoot+Redis+MySql,...原创 2020-03-29 09:38:56 · 203 阅读 · 0 评论 -
MySQL索引原理以及查询优化
转载: https://www.cnblogs.com/bypp/p/7755307.html原创 2020-03-12 16:56:33 · 108 阅读 · 0 评论 -
MySql-创建表报错[Err] 1067 - Invalid default value for 'runtime'
问题:远程连接linux上的mysql后,创建表时报表:[Err] 1067 - Invalid default value for ‘runtime’sql语句内容:CREATE TABLE `t_report` ( `runtime` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00' ON UPDATE CURRENT_TIMESTAM...原创 2020-02-21 16:50:11 · 863 阅读 · 0 评论 -
mysql 数据库优化系列:通过profile分析mysql语句
待续。。。原创 2020-02-03 16:22:28 · 94 阅读 · 1 评论 -
mysql 循环插入数据
DELIMITER $drop procedure if exists test;create procedure test()begindeclare _flag int DEFAULT 1000000;while _flag > 0 doinsert into lin_user (name,sex,habby,money,lon,me,sunshy,goods,apple...原创 2019-11-07 11:14:48 · 128 阅读 · 0 评论 -
mysql 数据库优化系列:索引的维护和优化
一、重复及冗余索引重复索引:是指想通的列以想通的顺序建立同类型的索引,如下表中的primary key 和 ID列上的索引就是重复索引create table test(id int not null primary key,name varchar(10) not null,title varchar(10) not null,unique(id),)engine = innod...原创 2019-11-03 16:52:41 · 158 阅读 · 0 评论 -
mysql 数据库优化系列:如何选择合适的列建立索引
1、在where从句、group by 从句、order by从句、on从句中出现的列2、索引字段的长度越小越好索引长度直接影响索引文件的大小,影响增删改的速度,并间接影响查询速度(占用内存多).针对列中的值,从左往右截取部分,来建索引a:截的越短, 重复度越高,区分度越小, 索引效果越不好b:截的越长, 重复度越低,区分度越高, 索引效果越好,但带来的影响也越大–增删改变慢,并间影响查...原创 2019-11-03 16:41:51 · 511 阅读 · 0 评论 -
mysql 数据库优化系列:通过explain查询和分析sql的执行计划
一、如何分析sql查询1、可以使用explain查询sql的执行计划explain + sql语句二、explain返回的各列的含义:table:查询的是那张表type:这是重要的一列,显示的是连接使用了哪种类型。从最好到最差的链接类型依次为:const、eq_reg、ref、range、index和allpossible_keys:显示可能应用在这张表中的索引。如果为空,则没有可用...原创 2019-11-03 16:21:59 · 235 阅读 · 0 评论 -
mysql 数据库优化系列:如何通过慢查询日志发现有问题的sql
1、查询次数多且每次查询占用的时间长的sql通肠胃pt-query-digest 分析的前几个查询2、IO大的sql注意pt-query-digest分析中的Rows examine 项3、未命中索引的sql注意pt-query-digest分析中的Rows examine 和 Rows Send的对比...原创 2019-11-03 16:11:55 · 147 阅读 · 0 评论 -
mysql 数据库优化系列:mysql慢查询日志分析工具之mysqldumpslow和pt-query-digest
一、mysqldumpslow1、在linux下执行MySQLdumpslow -h 查看使用方法2、mysqldumpslow -t 3 慢查询日志路径 | more#查看慢查询日志的前三条数据并查看二、pt-query-digest1、在linux下执行pt-query-digest -h 可查看使用方法pt-query-digest 慢查询日志的路径 #分析慢查询日志...原创 2019-11-03 16:07:38 · 481 阅读 · 0 评论 -
mysql 数据库优化系列:mysql慢查询日志的开启方式和存储格式
1、如何发现有问题的sqlshow variables like ‘slow_query_log’#查看慢查询日志是否开启set global slow_query_log_file = ‘/home/mysql/sql_log/mysql-show.log’#指定mysql慢查询日志的存储位置set global log_queries_not_using_indexes = on;...原创 2019-11-03 15:57:14 · 156 阅读 · 0 评论 -
centos mysql的启动文件和配置文件的路径
以下是通过yum安装的mysql的默认安装的情况下的路径1、/usr/lib/systemd/system/mysql.service 启动文件2、/etc/mysql/my.cnf原创 2019-10-29 18:44:20 · 2028 阅读 · 0 评论 -
MySQL 对于千万级的大表要怎么优化?
以下是来自知乎的网友观点一、实用预警:回答将以实际项目经验为例,为你解读优化的奥义!首先采用Mysql存储千亿级的数据,确实是一项非常大的挑战。Mysql单表确实可以存储10亿级的数据,只是这个时候性能非常差,项目中大量的实验证明,Mysql单表容量在500万左右,性能处于最佳状态。针对大表的优化,主要是通过数据库分库分表来解决,目前比较普遍的方案有三个:分区,分库分表,NoSql/New...原创 2020-01-02 16:07:29 · 161 阅读 · 0 评论 -
linux下连接mysql数据库
在linux下用localhost连接mysql数据库时,不是通过tcp协议连接的,而是通过socket链接的。因此若使用localhost无法正常连接数据库,则可用127.0.0.1替换掉localhost或者修改php.ini配置文件的配置项:mysql.default_socket = xxxxx #此处填写msyql.socket的文件路径, 一般在/var/lib/mysql下...原创 2019-10-14 19:42:14 · 372 阅读 · 0 评论