mysql
文章平均质量分 69
阿睿93
这个作者很懒,什么都没留下…
展开
-
mysql-优化案例
优化分页select title,content from product_comment where status=1 and product_id=1111 limit 10,5;第一步优化在status和product_id上构建联合索引 联合索引的顺序依据选择性决定select count(distinct status)/count(*),count(distinct ...原创 2018-09-04 15:27:24 · 173 阅读 · 0 评论 -
阅读笔记-mysql innodb并发控制实现方式
参考:https://mp.weixin.qq.com/s/R3yuitWpHHGWxsUcE0qIRQ,文中例子截取自上文redo、undo、回滚段redo:主要解决如果每次修改数据都去磁盘上随机读写,效率很低。所以改为顺序写入到redo日志中然后定期去修改磁盘。即使是数据库奔溃也可以依靠redo重做。保证事务的acidundo:在事务提交之前,会将修改的旧数据存放到undo日志中,新数...转载 2018-10-11 23:29:55 · 338 阅读 · 0 评论 -
阅读笔记-mysql 并发控制思路
参考:https://mp.weixin.qq.com/s/R3yuitWpHHGWxsUcE0qIRQ并发控制常见的并发控制手段有:锁、数据多版本锁普通锁:操作数据前锁定数据,操作完释放,保持一致性但是简单锁太粗暴,读也无法并行共享锁:s锁,读取数据时使用。共享锁之间不互斥,可以读读并行排他锁:x锁,修改数据时添加。写读、写写不能并行。类似于:写事务没有提交,读...转载 2018-10-11 21:13:43 · 205 阅读 · 0 评论 -
阅读笔记-mysql myisam和innodb的五个差异
count(*)对于myisam引擎,会直接存储总行数,所以比较快;但是如果一旦添加了查询条件则统计方式和innodb相同(一行一行的扫描)所以不管用什么引擎都要建立好索引全文索引MyIsam支持,innodb在5.6后支持不过在高并发大数据的情况下都不支持使用内置的全文索引,要使用索引外置索引外置待后续了解!!!事务myisam不支持,innodb支持myisam可以...转载 2018-10-11 21:00:33 · 211 阅读 · 0 评论 -
mysql执行计划分析
MySQL5.6中支持这个功能,optimizer_tracecreate table test1(a int,b tinyint,c varchar(20),d int);alter table test1 add primary key (a);alter table test1 drop primary key;alter table test1 add unique key (b,...原创 2018-09-20 23:16:34 · 625 阅读 · 0 评论 -
mysql 方法和存储过程
变量局部变量:declare:|用户可以使用DECLARE关键字来定义变量。然后可以为变量赋值。这些变量的作用范围是BEGIN…END程序段中用户变量:@变量名:eg:@a 定义用户变量,作用域在整个链接会话变量:在每次连接成功后会将全局变量拷贝一份到当前回话:set session var_name = value; show variables like “autocommit”;...原创 2018-09-20 22:53:20 · 381 阅读 · 0 评论 -
mysql分区、分表、分库、数据分片
当读压力很大的时候,可以考虑添加Slave机器的分式解决(读写分离、一主多备),但是当Slave机器达到一定的数量就得考虑分库了。当写压力很大的时候,就必须得进行分库操作(分表分库)。分区将表的数据均衡分摊到不同的硬盘,系统或是不同服务器存储介子中,实际上还是一张表。分区表水平分区:通过某个属性列来分割。eg:一个包含十年发票记录的表可以被分区为十个不同的分区,每个分区包含的是其中...原创 2018-09-19 15:15:38 · 4177 阅读 · 0 评论 -
mysql 分区表
mysql分区将一个表分解成多个表来进行多磁盘存放,不过这个分解对应用来说是透明的相比单磁盘可以存储更多数据在进行查询的时候可以只查询必要的分区,对于sum() count()可以并行执行对于过期数据可以直接整个分区删除,效率高多个磁盘获取更大的吞吐量partition key:分区键,按照特定的键分区。如果表有主键唯一键,则分区键只能在这些中选;否则随意同一个分区表的所有分区...原创 2018-09-18 22:27:55 · 156 阅读 · 0 评论 -
数据库表设计
数据库异常由于数据库设计不合理,造成在增删改时可能出现问题插入异常:想要插入的值依赖于其他无关紧要的值。如果在无关紧要的值不插入的时候,想要插入的值无法进行插入操作更新异常:只想修改某一个数据,却不得不修改多行数据删除异常:删除某一数据的时候,不得不同时删除其他无关紧要的数据范式第一范式:表中的所有字段都不能在分解为更基本的数据单位。所有字段都是单一字段属性,使用基础字...原创 2018-09-03 10:37:29 · 198 阅读 · 0 评论 -
innodb索引使用
本文针对的是mysql的innodb数据引擎来谈索引分成两类:聚集索引、辅助索引 聚集索引:数据存放在聚集索引的叶子节点上,聚集索引依据主键进行顺序排序辅助索引:除聚集索引外的索引,在innodb中叶子节点上存放的是主键,可以通过主键在聚集索引上找到对应的数据 这篇文章写的相当好:https://blog.csdn.net/IFollowRivers/article/detai...原创 2018-09-02 22:40:30 · 663 阅读 · 0 评论 -
mysql-读懂explain
explainid:执行顺序,数字越大优先级越高select_type:每个子句的类型 simple:不包含子查询和unionPRIMARY:内部包含子查询SUBQUERY:子查询(select和where中的)DERIVED:子查询(from中的)UNION:出现在UNION后UNION RESULT:从union的表中获取结果table:来自哪张表type:在表中查询用...原创 2018-09-02 20:09:24 · 170 阅读 · 0 评论 -
mysql 基础知识
事务手动开启:begin rollback commit自动开启SET AUTOCOMMIT=0 禁止自动提交SET AUTOCOMMIT=1 开启自动提交delete truncatedelete按行删除,删除后会记录到日志中,可以进行事务的回滚truncate清空整个表,不会记录到日志中,不能进行事务回滚。删除的过程中不会激活与表有关的删除触发器。执行速度快。https:/...原创 2018-09-23 10:34:34 · 223 阅读 · 0 评论