MyISAM

MySql速查手册

安稳与你 提交于 2020-11-24 15:56:23
索引 索引类型 索引注意事项 事务隔离级别 read uncommitted 未提交读 read committed 提交读 repeatable 重复读 Serializable可串行化 隔离界别查询 数据库锁 数据类型 INT varchar 时间类型 Java对应Mysql类型 常用函数 常用Sql 存储引擎 InnoDB MyISAM 知识点 最左匹配原则 =和in可以乱序 单表 尽量not null 业务常见问题 特殊字符插入问题 toc 索引 索引用来快速地寻找那些具有特定值的记录,所有MySQL索引都以B树的形式保存。就像是数据的目录。 索引类型 唯一索引 主键索引 B-Tree 普通索引 R-Tree 联合索引 Hash 全文索引 FullText 在mysql中fulltext索引只针对myisam生效。 复合索引 对于创建的多列索引(复合索引),不是使用第一部分就不会使用索引。 对于like查询前面%通配符不会使用索引,通配符在后面会使用索引。 使用or要求所有字段都必须有索引,否则不会使用索引。 索引注意事项 #避免使用双%号的查询条件。 如a like '%123%',(如果无前置%,只有后置%,是可以用到列上的索引的) 事务隔离级别 read uncommitted 未提交读 所有事务都可以看到没有提交事务的数据。是所有隔离级别中最低的一种,会出现脏读。

[转]MySQL-5.7 Update语句详解

做~自己de王妃 提交于 2020-11-24 14:44:37
原文地址:https://www.cnblogs.com/tongxiaoda/p/7908977.html .语法 (1)单表 UPDATE [ LOW_PRIORITY] [ IGNORE] table_reference SET assignment_list [ WHERE where_condition] [ ORDER BY ...] [ LIMIT row_count] value: {expr | DEFAULT}assignment:col_name = value assignment_list:assignment [, assignment] ... (2)多表 UPDATE [ LOW_PRIORITY] [ IGNORE] table_references SET assignment_list [ WHERE where_condition] 注意: 1)如果没有WHERE子句,则更新所有的行。 2)如果指定了ORDER BY子句,则按照被指定的顺序对行进行更新。 3)LIMIT子句用于给定一个限值,限制可以被更新的行的数目。 4)多表更新时ORDER BY和LIMIT不能被使用; 2.用法示例 mysql> select * from students; +-----+-------+--------+---------+ | sid | sname

Mysql共享锁、排他锁、悲观锁、乐观锁及其使用场景

会有一股神秘感。 提交于 2020-11-24 03:01:25
一、相关名词 |--表级锁(锁定整个表) |--页级锁(锁定一页) |--行级锁(锁定一行) |--共享锁(S锁,MyISAM 叫做读锁) |--排他锁(X锁,MyISAM 叫做写锁) |--悲观锁(抽象性,不真实存在这个锁) |--乐观锁(抽象性,不真实存在这个锁) 二、InnoDB与MyISAM Mysql 在5.5之前默认使用 MyISAM 存储引擎,之后使用 InnoDB 。查看当前存储引擎: show variables like '%storage_engine%'; MyISAM 操作数据都是使用的表锁,你更新一条记录就要锁整个表,导致性能较低,并发不高。当然同时它也不会存在死锁问题。 而 InnoDB 与 MyISAM 的最大不同有两点:一是 InnoDB 支持事务;二是 InnoDB 采用了行级锁。也就是你需要修改哪行,就可以只锁定哪行。 在 Mysql 中,行级锁并不是直接锁记录,而是锁索引。索引分为主键索引和非主键索引两种,如果一条sql 语句操作了主键索引,Mysql 就会锁定这条主键索引;如果一条语句操作了非主键索引,MySQL会先锁定该非主键索引,再锁定相关的主键索引。 InnoDB 行锁是通过给索引项加锁实现的,如果没有索引,InnoDB 会通过隐藏的聚簇索引来对记录加锁。也就是说:如果不通过索引条件检索数据,那么InnoDB将对表中所有数据加锁

面试:给我说说你平时是如何优化MySQL的?

核能气质少年 提交于 2020-11-22 14:05:13
面试:给我说说你平时是如何优化MySQL的? 1、explain 在MySQL优化的时候、我们使用最多的是explain查看 SQL 的执行计划 类型 解释 type 连接类型。一个好的SQL语句至少要达到range级别、杜绝出现all级别 key 使用到的索引名。如果没有选择索引,值是NULL。可以采取强制索引方式【force index】、这里可以用force index(),这个指令可以指定本次查询强制使用哪个索引,因为Mysql优化器的选择并不是最优的索引。 ken_len 索引长度。 rows 扫描列数。该值是个预估值。 extra 注意常见的不太友好的值有:Using filesort, Using temporary。 具体的参考文档: https://www.cnblogs.com/laowenBlog/p/12640755.html 2、SQL语句中IN包含的值不应过多 MySQL对于IN做了相应的优化,即将IN中的常量全部存储在一个数组里面,而且这个数组是排好序的。 但是如果数值较多,产生的消耗也是比较大的。 例如:select id from table_name where num in(1,2,3) 对于连续的数值,能用 between 就不要用 in 了; 再或者使用连接来替换。 3、SELECT语句务必指明字段名称 SELECT *增加很多不必要的消耗

win10安装mysql5.7

99封情书 提交于 2020-11-21 07:47:26
最近在win10上重装mysql,安装过程中踩了一些坑,通过参考其他一些博客,解决了这些问题,特此记录下来,方便以后需要时查看,也希望能够帮助到需要这篇文章的人。 1.如果之前安装过mysql,需要彻底删除之前的mysql,否则初始化新安装的mysql很可能报错,从而无法使用 彻底删除mysql参考: https://www.cnblogs.com/jpfss/p/6652701.html 2.下载mysql,建议选择国内镜像,如 http://mirrors.sohu.com/mysql/MySQL-5.7/ 页面加载完毕后,ctrl+f搜索'win',找到windows版本的安装包,可以选择下载 mysql-5.7.23-winx64.zip 或者 mysql-5.7.23-winx64.msi 3.进行安装,我选择使用 mysql-5.7.23-winx64.zip ,创建mysql目录,并将压缩包内容解压至目录,创建data目录和my.ini文件 我的my.ini配置为: [client] port=3306 [mysql] default-character-set=utf8 [mysqld] port=3306 basedir="D:/mysql5/mysql-5.7.23-winx64" datadir="D:/mysql5/mysql-5.7.23-winx64

面了美团我才知道大公司的面试有多恐怖,附上我的美团5面经历,终拿offer!

微笑、不失礼 提交于 2020-11-19 13:26:49
前言 面了美团,越发让我觉得想进大厂还需要很长时间的积累,问的知识点并没有那么多那么宽,但是会比我看到的更深入一点更贴近使用场景一点,自己差的还很远,可能真的要以春招为目标了 1.自我介绍 2.简单说一下项目,项目的问题,难点 3.Mybatis的$和#的区别 4.Mysql的存储引擎有哪些 5.Myisam和Inodb的区别 6.Innodb一定要有主键嘛,原因是什么 7.主键为什么建议使用自增主键,比如是字符串可以做主键嘛 8.Innodb的锁有哪些 9.解释一下间隙锁 10.间隙锁是共享锁还是排它锁 11.共享锁和排它锁对比 12.什么情况触发表锁和行锁和间隙锁(间隙锁没答对被追问了) 13.最左匹配原则,abc,顺序也是abc,什么情况索引肯定会失效,什么情况下整个索引都失效 14.spring mvc的执行流程 15.lock的底层实现原理(忘记了,很尴尬,很急但就是想不起来了) 16.jdk的线程池有哪些,怎么选择使用哪个线程池(只记得概念,怎么选择完全说不出来) 17.核心线程数和最大线程数的数量该设计为多大 18.设计模式了解哪些,工厂模式什么情况会用到 19.哪个框架在什么地方会用到这些模式 20.有用过redis,esmq嘛(后面告诉我我的知识范围宽度广度都需要提高,这些技术还需要去学习 😭😭) 21.jvm什么情况下触发young gc和full gc

mysql备份与还原-mysqldump备份、mysql与source还原

笑着哭i 提交于 2020-11-19 05:41:27
以下都以在linux操作系统上的mysql为例 mysqldump备份 mysqldump实际就是将数据库中的数据转化为建库、建表和插入记录的sql语句 1.备份一个数据库 [或其中几个表],不指定表表示备份整个数据库,指定表表示备份指定的表 在系统命令下: mysqldump -u用户 -p密码 库 [表1 表2 表3 …] > /opt/backname.sql [root@oldboy opt]# mysqldump -uroot -poldboy oldboy student >/opt/studentbak.sql 备份一个库或其中的表时,备份语句中不包含建库语句,因此还原时需要指定数据库 如果备份整个库时加上-B参数,备份语句中会包含建库和切库语句如mysqldump -uroot -poldboy -B oldboy,-B参数不适用于备份表 2.备份多个数据库 在系统命令下: mysqldump -u用户 -p密码 --databases 库1 库2 库3 … > /opt/backname.sql mysqldump -u用户 -p密码 --B 库1 库2 库3 … > /opt/backname.sql [root@oldboy opt]# mysqldump -uroot -poldboy --databases oldboy oldboy_utf8 >/opt

mysql的备份与还原,安装(window)

余生颓废 提交于 2020-11-19 05:19:23
之前一直使用的navicat的自动的备份功能。但是在使用navicat的还原功能时,贼慢。 今天要做的是window服务器上将mysql单个数据库备份。然后还原到我的mac笔记本上。 本来以为很快的,中间遇到来一些小坑,搞了很久。 1. 备份 ,从window服务器使用mysqldump命令来备份,由于后面还要下载到本地,所以备份同时要进行压缩,不然数据量很大,呆会下载要很久。 D:\tool\mysql\bin\mysqldump.exe -uusername -ppassword dbname --default-character- set =UTF8| gzip >d:\ backup \dbname_% date :~0,4%% date :~5,2%% date :~8,2%.gz 上面的gzip命令,需要自己先在服务器安装上gzip的window版本。然后在环境变量中添加bin目录到path路径下。 最后 > 后面是备份到的目录和文件名,文件名根据日期自动命名。这里最好指定导出时的字符集,不然中文会出现乱码情况。 2. 还原 下载到本地,解压缩还原。 mysql -h192.168.0.101 -uusername -p"password" --default-character- set =utf8 -f dbname < dbname_20190601.gz

20个数据库常见面试题讲解()

落爺英雄遲暮 提交于 2020-11-16 03:28:09
20个数据库常见面试题讲解() 进了互联网公司,整天也就是搬砖,等到了面试的时候,发现数据库方面,忘得一塌糊涂,抽时间整理了一些数据库方面的题。欢迎大家向我推荐你在面试过程中遇到的问题,我会把大家推荐的问题添加到下面的常用面试题清单中供大家参考。 1.事务四大特性(ACID)原子性、一致性、隔离性、持久性? 2.事务的并发?事务隔离级别,每个级别会引发什么问题,MySQL默认是哪个级别? 3.MySQL常见的三种存储引擎(InnoDB、MyISAM、MEMORY)的区别? 4.MySQL的MyISAM与InnoDB两种存储引擎在,事务、锁级别,各自的适用场景? 5.查询语句不同元素(where、jion、limit、group by、having等等)执行先后顺序? 6.什么是临时表,临时表什么时候删除? 7.MySQL B+Tree索引和Hash索引的区别? 8.sql查询语句确定创建哪种类型的索引?如何优化查询? 9.聚集索引和非聚集索引区别? 10.有哪些锁(乐观锁悲观锁),select 时怎么加排它锁? 11.非关系型数据库和关系型数据库区别,优势比较? 12.数据库三范式,根据某个场景设计数据表? 13.数据库的读写分离、主从复制,主从复制分析的 7 个问题? 14.使用explain优化sql和索引? 15.MySQL慢查询怎么解决? 16.什么是 内连接、外连接

2.mysql存储引擎

眉间皱痕 提交于 2020-11-13 04:58:26
常见的mysql存储引擎有MyISAM,InnoDB 1.存储引擎MyISAM   (1)它不支持事务,也不支持外键,尤其是访问速度快,对事务完整性没有要求或者以SELECT、INSERT为主的应用基本都可以使用这个引擎来创建表   (2)每个MyISAM在磁盘上存储成3个文件,其中文件名和表名都相同,但是扩展名分别为:     .frm(表结构信息)     MYD(MYData,数据信息)     MYI(MYIndex,索引信息)   特性:     并发性与锁级别:表级锁(并发性差,对只读还可以) 表损坏修复:check table tableName; repair table tableName   支持的索引类型   支持数据压缩:myisampack –b –f myIsam.MYI命令(对已经压缩的表不能进行写操作)   限制:   使用场景:非事务型应用(非财务应用);只读类应用(报表应用);空间类应用(空间函数jps等) 2.存储引擎InnoDB   (1)Innodb使用表空间进行数据存储     使用表空间配置参数:innodb_file_per_table     ON:每一个独立表空间:tablename.ibd;     OFF:系统表空间:ibdataX     系统表空间和独立表空间如何选择:     比较:     1