MySQL
文章平均质量分 82
Amo,
A
展开
-
MySQL系列笔记(一)——优化以及锁
通常情况下,当访问某张表的时候,读取者首先必须获取该表的锁,如果有写入操作到达,那么写入者一直等待读取者完成操作(查询开始之后就不能中断,因此允许读取者完成操作)。当读取者完成对表的操作的时候,锁就会被解除。如果写入者正在等待的时候,另一个读取操作到达了,该读取操作也会被阻塞(block),因为默认的调度策略是写入者优先于读取者。当第一个读取者完成操作并解放锁后,写入者开始操作,并且直到该写入者完...转载 2018-10-09 10:28:35 · 85 阅读 · 0 评论 -
mysql(七):count()统计方式的不同
count(*)的实现方式:在不同的MySQL引擎中,count()实现的方式不同。· MyISAM引擎中把一个表的总行数直接存在了磁盘上,执行count() 的时候直接返回这个数,效率很高;(不支持事务)· 而InnoDB引擎,执行count(*)的时候,需要把数据一行一行的从引擎读出来,然后累计计数;(因为MVCC的实现,应该返回多少行是不确定的(自己能读到自己事务的未提交记录,而不能...原创 2019-07-17 00:03:17 · 620 阅读 · 0 评论 -
mysql(六):表数据的删除以及空间回收
场景:为什么表删掉了一半的数据,表文件的大小还是没变呢?表数据的存放:表数据的存放由参数innodb_file_per_table 控制:① 该参数设置为OFF,表数据放在系统共享表空间,也就是跟数据字典放在一起;② 设置为ON的时候,每个InnoDB表数据存放在一个以.ibd为后缀的文件中。从MySQL5.6.6版本开始,默认值就是ON了。建议这个值设置为ON,因为一个表单独存储为...原创 2019-07-16 22:29:49 · 1593 阅读 · 0 评论 -
mysql(五):数据库偶尔响应慢以及InnoDB刷脏页的策略
场景:一条SQL语句,正常执行的时候特别快,但是有时不知道怎么回事,就会变得特别慢,并且这样的场景很难复现,不只是随机,而且持续时间还很短。原因:只要了解WAL机制,就知道InnoDB在处理更新语句的时候,只做了写日志这个磁盘操作,这个日志叫作redo log(重做日志),在更新内存写完redo log后,就返回更新成功。所以总需要时间去将内存中的数据写入到磁盘中,这个过程的术语就叫作fl...原创 2019-07-16 21:46:02 · 736 阅读 · 0 评论 -
mysql(四): mysql的全局锁、表锁、行锁、死锁检测
数据库锁设计的初衷是处理并发问题。作为多用户共享的资源,当出现并发访问的时候,数据库需要合理的控制资源的访问规则。全局锁主要用在逻辑备份中,对于全部是InnoDB引擎的库,建议使用 -single-transaction参数备份更友好。一、全局锁:就是对整个数据库实例加锁。MySQL提供了一个加全局读锁的方法。命令是: Flush table with read lock (FTWRL)。当...原创 2019-07-06 16:56:39 · 376 阅读 · 0 评论 -
mysql(三):InnoDB的索引
一、InnoDB索引的模型:索引的出现其实是为了提高数据查询的效率,就像书的目录一样。在InnoDB中,表都是根据主键顺序以索引的形式存放的,这种存储方式的表称为索引组织表。InnoDB索引底层是使用B+树。数据都是存储在B+树的叶子节点上。每一个索引在InnoDB中对应一颗B+树。根据叶子节点的内容,索引类型分为主键索引(聚簇索引)和非主键索引(二级索引)。主键索引:叶子节点存的是一整...原创 2019-07-05 16:48:47 · 229 阅读 · 0 评论 -
mysql(一):查询、更新语句是怎样运行的?
一、一条普通的查询语句是如何执行的?不同的存储引擎公用一个server层,也就是从连接器到执行器的部分。1.首先是通过连接器连接到数据库,会跟客户端建立连接、在权限表获取权限(之后再这个连接里面的权限判断逻辑都依赖此时读到的权限,不会再去读),维持和管理连接。(一个用户成功建立连接后,即使对该用户的权限做了修改,也不会影响已经存在连接的权限。只有再新建的连接才会使用新的权限设置)连接完成...原创 2019-07-05 01:06:30 · 388 阅读 · 0 评论 -
mysql(二):事务以及隔离级别
一、事务:事务就是保证一组数据库操作,要么全部成功,要么全部失败。在MySQL中,事务支持是在引擎层实现的。MySQL原生的MyISAM引擎不支持事务,这也是MyISAM被InnoDB取代的重要原因之一。① ACID(Atomicity(原子性)、Consistency(一致性)、Isoiation(隔离性)、Durability(持久性))。当数据库上有多个事务同时执行的时候,就有可能出...原创 2019-07-13 14:04:10 · 74 阅读 · 0 评论 -
MySQL之分库分表(一)
一、首先我们在linux下安装好mysql5.7版本,方法有几种,这里使用安装离线rpm包方式,感觉这种方式最简单快捷。(1)wget http://dev.mysql.com/get/mysql57-community-release-el7-8.noarch.rpm(2)rpm -ivh mysql57-community-release-el7-8.noarch.rpm(3)yum...原创 2019-03-27 01:12:45 · 341 阅读 · 0 评论 -
分布式锁的三种方法对比
Q:一个业务服务器,一个数据库,操作:查询用户当前余额,扣除当前余额的3%作为手续费synchronizedlockdb lockQ:两个业务服务器,一个数据库,操作:查询用户当前余额,扣除当前余额的3%作为手续费分布式锁我们需要怎么样的分布式锁?可以保证在分布式部署的应用集群中,同一个方法在同一时间只能被一台机器上的一个线程执行。这把锁要是一把可重入锁(避免死锁)这把锁...转载 2019-03-14 20:51:28 · 195 阅读 · 0 评论 -
常用复杂查询SQL语句
1.oracle查询树形结构,比如有时候菜单需要点击节点查询所有的子节点孙节点。不用在结构上查询,直接使用sql的关键字最关键的是子查询里面 start with 关键字的使用。这条sql语句作用是根据节点id查询所有的子节点以及当前节点的数据。2.mybatis里面写模糊查询...原创 2018-11-28 13:20:45 · 481 阅读 · 0 评论 -
MYSQL系列笔记(三)——优化专题
一、首先mysql得先开启慢查询日志。不会的可以网上查。1.1 环境准备:perl环境,因为mysql自带的mysqldumpslow优化工具以及pt-query-digest工具分析都是perl文件。curl环境,因为mysql安装版没有带pt-query-digest工具,所以想要使用该工具得先安装,安装可以通过curl命令直接安装。就得先需要curl环境。安装perl环境只需要下载完...原创 2018-11-26 21:47:42 · 161 阅读 · 0 评论 -
MySQL索引
一、索引属性索引是加速表内容访问的主要手段,特别对涉及多个表的连接的查询更是如此。1.索引的特点所有的MySQL列类型都能被索引。在相关的列上使用索引是改进select操作性能的最好方法。(1) 一个表最多可有16个索引。最大索引长度是256个字节,尽管这可以在编译MySQL时被改变。(2) 对于CHAR和VARCHAR列,你可以索引列的前缀。这更快并且比索引整个列需要较少的磁盘空间。对...原创 2018-11-16 16:50:47 · 1021 阅读 · 0 评论 -
MYSQL系列笔记(二)——查询优化
一、明确搜索优化的整体思路以及查询优化的因素:(1)搜索优化的整体思路:索引优化,查询优化,查询缓存,服务器设置优化,操作系统和硬件优化,应用层面优化(web服务器,缓存)等等。对于一个整体项目而言只有这些齐头并进,才能实现mysql高性能。(2)1.是否向数据库请求了不需要的数据:也就是说不要轻易使用select * from ,能明确多少字段就写多少字段2.mysql是否扫描额外的...原创 2018-10-09 15:35:59 · 116 阅读 · 0 评论 -
MySQL学习笔记之增删查改(一)
根据应用情况可以使用replace 语句代替insert/update语句。例如:如果一个表在一个字段上建立了唯一索引,当向这个表中使用已经存在的键值插入一条记录,将会抛出一个主键冲突的错误。如果我们想用新记录的值来覆盖原来的记录值时,就可以使用REPLACE语句。使用REPLACE插入记录时,如果记录不重复(或往表里插新记录),REPLACE功能与INSERT一样,如果存在重复记录,REPLA...原创 2018-10-09 12:38:35 · 375 阅读 · 0 评论 -
mysql(八):order by 的工作原理
MySQL 会给每个线程分配一块内存用于排序,称为sort_buffer。全字段排序:一般带有order by 的SQL语句 会初始化sort_buffer,放入需要返回的字段(比如 name,age)。查找一条记录就放入到sort_buffer,继续找,直到找完符合条件的为止。对sort_buffer中的数据按照字段如name快速排序(归并排序);排序这个动作可能在内存中完成,也可能需...原创 2019-07-17 22:17:31 · 373 阅读 · 0 评论