MySQL
blinkbean
不知名CRUD选手。
展开
-
备份与恢复
备份与恢复概述按备份方法分:hot backup 热备、在线备份数据库运行中直接备份,对正在运行的数据库没有任何影响。cold backup 冷备、离线备份最为简单,一般只需要拷贝相关的数据库物理文件即可。优点:备份简单、恢复简单、恢复速度快、备份文件易于在不同操作系统和MySQL版本上恢复缺点:备份文件大、不总是可以轻易跨平台。如大小写敏感、浮点数格式等。warm b...原创 2020-05-05 10:58:24 · 369 阅读 · 0 评论 -
事务
数据库引入事务的主要目的事务会把数据库从一种状态转换为另一种一致的状态,在提交工作时,可以确保要么所有修改都已经保存,要么都不保存。ACID特性原子性 atomicity要么都成功,要么都失败。一致性 consistency事务执行前后,数据库的完整性约束没有破坏。(你的10张银行卡里共有100块,无论这10张银行卡之间怎么转账,也只有100块)隔离性 isolati...原创 2020-05-05 10:57:05 · 301 阅读 · 0 评论 -
索引与算法
B+树索引的管理创建索引对于索引的添加或删除,MySQL先创建一张临时表,把数据导入临时表,删除原表,然后把临时表重命名为原来的表。因此大表创建和删除索引的时间非常长。快速索引创建法:对于非聚集索引的创建,InnoDB会对表加S锁,创建过程中只能读,不能写。B+树索引的使用顺序读顺序的读取磁盘上的块随机读访问的块不连续,需要磁头不断移动预读取通过一次I/O请...原创 2020-05-05 10:53:06 · 285 阅读 · 0 评论 -
表
主键三连显示定义主键。如果没有显示指定,查找表中唯一索引,如果有,该列为主键。不符合上面两条,InnoDB自动创建一个6字节大小的指针。逻辑存储结构表空间->段->区->页表空间每张表的表空间存放的只是数据、索引、插入缓冲。其他类型的数据,如undo信息,系统事务信息,二次写缓冲等还是存放在共享表空间中。段每个段开始时,先用32个页大小的碎片页...原创 2020-05-04 13:42:01 · 244 阅读 · 0 评论 -
文件
参数文件mysql --help | grep my.cnf没有参数文件,取源代码中的默认值。日志文件错误日志# 查看文件位置show variables like 'log_error';二进制日志事务提交前进行记录。记录对数据库执行更改的所有操作,主要作用是恢复和复制。二进制日志文件在默认情况下没有启动,启动后会使性能下降1%。binlog_format(...原创 2020-05-04 13:38:23 · 203 阅读 · 0 评论 -
InnoDB存储引擎
InnoDB引擎的4大特性插入缓存(物理页的一个组成部分)show engine innodb status\G;INSERT BUFFER AND ADAPTIVE HASH INDEX # 插入缓冲信息对于非聚集索引的插入或更新操作,不是每次直接插入索引页。而是先判断插入的非聚集索引页是否在缓冲池中。如果在,则直接插入,如果不在,先放入插入缓冲区,然后再以一定的频率执行插入缓冲和...原创 2020-05-04 13:34:37 · 446 阅读 · 0 评论 -
存储引擎和体系结构
MySQL有哪些常见的引擎,说说他们的区别?show engines; #查看支持的引擎MyISAM:非事务处理存储引擎索引放在XX.MYI文件中,数据放在XX.MYD文件中。在线分析处理OLAP。全文索引。InnoDB:具备外键功能的存储引擎、行锁索引也是数据。数据和索引存在一个XX.IDB文件中。在线事务处理OLTP。Mermory:基于内存Memory表至少...原创 2020-05-04 10:54:14 · 205 阅读 · 0 评论 -
MySQL——碎片整理遇到的那些事
为什么要碎片整理MySQL中使用varchar、text、blob等可变长度的文本数据类型之后需要做额外的MySQL数据表碎片整理。当MySQL从表中删除一行内容,该段空间就会被留空。如果有大量的删除操作,会使留空空间变得比存储列表内容所使用的空间更大。MySQL进行数据扫描时,它扫描的对象实际是列表的容量需求上限,也就是数据被写入的区域中处于峰值位置的部分。如果进行新的插入操作,MySQ...原创 2020-04-20 22:49:27 · 519 阅读 · 0 评论 -
MySQL——Explain能看出点啥
mysql explain用法和结果的含义explain或desc显示了mysql如何使用索引来处理select语句以及连接表。可以帮助选择更好的索引和写出更优化的查询语句。explain 数据表 或 desc 数据表显示数据表各字段含义explain sql 或desc sql显示sql执行效率explain列解释table 输出的行所引用的表select_typ...原创 2020-04-20 22:42:57 · 762 阅读 · 0 评论 -
MySQL面试100问
面试官问:“了解MySQL吗?”这不就是一句废话?要是说不了解,那不直接凉了?。面试官:“了解的话,那说说XXX吧。”巴拉巴拉…开启学霸模式MySQL有哪些常见的引擎,说说他们的区别?有哪些索引和他们之间的区别?B+数有什么特点?MySQL建索引要注意什么?说说什么是最左匹配对组合索引的理解有没有遇到过慢查询,如何优化?Mysql有哪几种事物隔离级别及区别?Mysql默认...原创 2020-04-19 18:03:50 · 12555 阅读 · 12 评论 -
Mysql列自增是怎么实现的
AUTO_INCREMENT两种情况1、在载入语句执行前,已经不确定要插入多少条记录。在执行插入语句时在表级别加一个auto-inc锁,然后为每条待插入记录的auto-increment修饰的列分配递增的值,语句执行结束后,再把auto-inc锁释放掉。一个事务再持有auto-inc锁的过程中,其他事务的插入语句都要被阻塞,可以保证一个语句中分配的递增值是连续的。AUTO-INC锁的...原创 2020-01-02 22:08:16 · 1826 阅读 · 0 评论 -
ubuntu安装MySQL并导入数据
一、安装MySQL1、sudo apt-get update2、sudo apt-get install mysql-server本地安装可能需要等一段时间,如果安装过程中询问是否continue,输y。 中间会有两次提示输入密码,输入相同密码,OK即可。3、sudo apt-get install libmysqlclient-dev4、sudo netstat -tap原创 2017-03-24 16:20:35 · 490 阅读 · 0 评论 -
Java连接MySQL报错:java.lang.ClassNotFoundException: com.mysql.jdbc.Driver(内附jre下载链接)
以下方法亲测:Windows和Linux同样适用通过Tomcat作为服务使用Java连接MYSQL数据库时会出现如下报错:java.lang.ClassNotFoundException: com.mysql.jdbc.Driver简单的解决方法就是直接在Tomcat的lib文件夹下放置连接MySQL的驱动文件:mysql-connector-java-5.1.7-bin.jar。原创 2017-05-21 21:57:05 · 1348 阅读 · 0 评论 -
MySQL数据库导出错误:MySQL server version for the right syntax...
我就想简单的导出一个数据库文件,不需要复杂的操作。MySQL命令行导出数据库,网上基本上清一色答案:mysqldump -u 用户名 -p 数据库名 > 导出的文件名.sql我输入之后却出现这样的错误:百度错误提示信息之后的原因是因为:驱动版本不符,让我加一个jar包(太麻烦了,继续查)。当查到这篇文章的时候才恍然大悟:点击打开链接原来是我“打开的方原创 2017-06-15 11:36:41 · 5399 阅读 · 0 评论 -
MySQL连接失败:Can't connect to MySQL server on '127.0.0.1'
报错信息:failed to connect to MySQL at localhost:3306 with user rootCould not connect to MySQL database at 127.0.0.1: Can't connect to MySQL server on '127.0.0.1' (10061)解决方法:依次点 开始---运行---输入“se原创 2017-07-18 20:59:30 · 46417 阅读 · 8 评论 -
mac mysql报错:The server quit without updating PID file (/usr/local/var/mysql/mac_name.local
场景:macA更换为macB,使用“迁移助理”迁移所有数据,redis、zk、kafka等都可用,唯独mysql报错。启动:mysql.server start报错:ERROR! The server quit without updating PID file (/usr/local/var/mysql/***.local.pid)解决:详细Stack Overflowbrew r...原创 2018-12-08 17:11:29 · 16745 阅读 · 6 评论 -
MySQL——怎么锁?
MySQL 锁thanks :zhiboer静下心来静下心来前提没有线程对该结果集中的任何行数据使用排他锁或共享锁,否则申请会阻塞。for update仅适用于InnoDB,且必须在事务块(BEGIN/COMMIT)中才能生效MySQL会对查询结果集中每行数据都添加排他锁,其他线程对该记录的更新与删除操作都会阻塞。排他锁包含行锁、表锁。数据一致性...原创 2019-02-23 23:01:16 · 208 阅读 · 0 评论 -
Mysql主从同步原理
Replication 线程master与slave之间实现整个复制过程主要由三个线程完成:两个(SQL线程和IO线程)在slave端,一个(IO线程)在master端。要实现MySQL的replication,必须打开master端的Binary Log(mysql-bin.xxx)功能。整个复制过程实际上就是slave从master端获取日志然后在自己身上顺序执行日志中记录的各...原创 2019-05-26 23:25:09 · 4135 阅读 · 0 评论 -
MYSQL如何导入数据?
MySQL导入数据两种方法一、命令行导入1、打开命令行界面:MySQL x.x Command Line Client,并输入密码进入。2、查看MySQL里存在哪些databasesshow databases;3、在返回的结果里,如果有自己将要存放的database则use databaseName;否则新建一个新的database,注意database名称不能为数字。cre原创 2017-03-24 12:07:39 · 2508 阅读 · 1 评论