MYSQL技术分享
文章平均质量分 76
主要分享和探讨与MYSQL数据库相关问题
r_martian
这个作者很懒,什么都没留下…
展开
-
数据库及程序日常开发命名实践【四期】
本篇继续整理日常项目中语义化命名(变量、类、常量、函数、接口、属性等)的一些实践工作,原则上尽量避免用一些生僻词。原创 2022-11-05 15:19:46 · 312 阅读 · 0 评论 -
数据库及程序日常开发命名实践【三期】
中文英文中文英文中文英文阶段phase讨论discuss挂载安装mount数量amount法律 定律law标签tag拒绝refuse工具箱toolbox utils崩溃crash访问access人工智能ai本地的local保留的reserve翻译translate拆分split切片slice提供provide图图表graph男性male女性female公开的...原创 2022-01-09 17:28:43 · 280 阅读 · 0 评论 -
数据库及程序开发日常命名实践【一期】
本篇主要记录日常项目中语义化命名(变量、类、常量、函数、接口、属性等)的一些实践工作。中文英文中文英文中文英文视图view字段field服务器server加载loading行row列column集群cluster别名alias操作operation控制control危机danger信用credit贷款loan热修复hotfix仓库repository镜像image异常exception包原创 2021-11-07 19:37:51 · 813 阅读 · 0 评论 -
【工具】pt-online-schema-change
之前写过一篇,内容还是比较笼统,特重写一篇,以说明。原文地址:【MYSQL ddl原理及千万级表修改不停服解决方案】一、本质上解决的是修改语句阻塞问题,时间上肯定更长,但是不影响正常的业务使用。二、具体流程1、创建和源表同结构的新表2、在新表执行DDL语句3、在源表创建三个触发器分别对应insert、update、delete操作4、从源表拷贝数据到新表,拷贝过程中源表通过触发器把新的DML操作更新到新表中(chunk-size, chunk-time参数)5、rename源表到old表中,原创 2021-04-24 20:54:28 · 328 阅读 · 1 评论 -
【深度】MYSQL索引结构详解
MYSQL 是目前企业使用最广泛的数据库之一,索引优化是日常工作中比较常见性能优化工作之一,故本文主要是针对索引相关内容进行梳理和说明。原创 2020-05-30 21:49:05 · 273 阅读 · 0 评论 -
MySQL数据写入ES实践
本篇主要说的是在【爬虫POI】一文中爬取的poi数据的基础上,将数据从mysql导入elasticsearch中,从而便于检索和查询。安装 elasticsearch,elasticsearch-head,kibana以便可视化查看,如下图一、定义索引根据mysql表的字段信息,来定义es索引类型| poi | CREATE TABLE `poi` ( `id` int(11)...原创 2019-08-18 23:50:57 · 3317 阅读 · 0 评论 -
MYSQL force index索引优化
mysql索引优化一直以来是DBA和开发人员长期坚持的一项基本工作,合理的索引对于业务来说非常重要,合理的索引能有效改善性能。因此在开发中,定期排查索引的有效性很重要,排查的根据就是历史sql,排查的目的就是优化索引,一个合格的开发人员要考虑未来1年的数据量的情况下sql的执行效率。索引是否有效的方法是explain,它能反应很多内容,具体的不再赘述看下面的sql示例。访问类型 ALL、ind...原创 2019-07-13 10:04:20 · 2060 阅读 · 1 评论 -
MYSQL 线上表删除异常
mysql表删除异常exception 'PDOException' with message 'SQLSTATE[HY000]: General error: 1175 You are using safe update mode and you tried to update a table without a WHERE that uses a KEY column' in /opt/ho...原创 2019-03-23 17:33:20 · 507 阅读 · 0 评论 -
【深度】MySQL分页查询优化方案
MySQL是通过select * from order limit offset, N 的方式实现分页查询的。但并不是跳过offset行,而是取offset+N行,然后放弃前offset行,返回N行,当offset很小的时候,是没有问题的,当offset很大的时候,效率就非常的地下,要么控制返回的总页数,要么对超过特定阈值的页数进行SQL优化。一、首先应该开启慢查询跟踪慢sqlmysql>...原创 2019-03-19 07:17:07 · 2366 阅读 · 1 评论 -
【深度】MYSQL ddl原理及千万级表修改不停服解决方案
mysql 的DDL语句在执行的时候会锁表,在数据量大的情况下锁表就会严重影响正常的数据写入,innodb存储引擎在DDL时执行操作如下:按照原始表(original_table)的表结构和ddl语句,新建一个不可见的临时表(temporary_table)在原表上面加上WRITE LOCK,阻塞所有的更新操作(insert、delete、update等操作)执行insert into ...原创 2018-08-18 20:58:56 · 1025 阅读 · 2 评论 -
MYSQL 索引与锁
由于最近接触的mysql索引问题比较多,特地查了些索引相关的文章,进行分析学习,文章列表如下:1 mysql加锁详解 2 SQL中的where条件,在数据库中提取与应用浅析 3 MySQL加锁处理分析【重点】 4 MySQL锁算法详解需要理解的一些点: 1 索引与存储引擎有关 2 锁是在索引上实现的 3 索引分类(聚簇,非聚簇;主键,唯一,联合,覆盖,普通等) 4 加锁过程...原创 2018-08-17 22:22:29 · 572 阅读 · 0 评论 -
MYSQL 索引最左匹配原则
转自知乎问题:mysql索引最左匹配原则的理解?具体问题描述如下:CREATE TABLE `student` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(255) DEFAULT NULL, `cid` int(11) DEFAULT NULL, PRIMARY KEY (`id`), KEY `nam...原创 2018-06-18 11:06:45 · 2659 阅读 · 1 评论 -
MYSQL 执行计划追踪 + json数据
mysql优化三板斧(explain, profiling,optimizer_trace) explain是各种执行计划选择的结果(select ,update, delete)想看整个执行计划以及对于多种索引方案之间是如何选择的,MySQL5.6中支持这个功能,optimizer_trace 此功能默认是关闭的,因为开启会带来性能损耗[dbname: information_schema]原创 2017-08-21 23:13:22 · 622 阅读 · 0 评论 -
MYSQL 性能优化之profiling
查看是否开启 show variables like ‘%profiling%’; 或者 show profiles;开启 默认最多允许存储15条记录 set profiling = 1; +————————+——-+ | Variable_name | Value | +————————+——-+ | have_profiling | YES原创 2017-08-20 23:55:16 · 406 阅读 · 0 评论 -
MYSQL 性能优化之explain详解
explain得到最后优化后的执行计划。详细看看explain结果: mysql> explain select * from tbl_section s left join tbl_course c on c.id = s.course_id; +—-+————-+——-+——–+—————+———+———+———————-+——+——-+ | id | select_type | tabl原创 2017-08-20 17:35:09 · 342 阅读 · 0 评论 -
MySQL关键字及保留关键字
mysql关键字及保留关键字如下:ADDALLALTERANALYZEANDASASCASENSITIVEBEFOREBETWEENBIGINTBINARYBLOBBOTHBYCALLCASCADECASECHANGECHARCHARACTERCHECKCOLLATECOLUMNCONDITIONCONNEC...原创 2019-10-23 21:35:58 · 463 阅读 · 0 评论 -
缓存失效、穿透、并发、雪崩问题及解决方法
1 缓存失效 引起这个原因的主要因素是高并发下,一般设定一个缓存的过期时间时,并发很高时可能会出在某一个时间同时生成很多的缓存,并且过期时间在同一时刻,这个时候就可能引发——当过期时间到后,这些缓存同时失效,请求全部转发到DB,DB可能会压力过重。 处理方法: 将缓存失效时间分散开,不要所以缓存时间长度都设置成特定时长;比如在原有的失效时间基础上增加一个随机值,比如1-5分钟随机,这...原创 2018-04-03 23:14:46 · 1457 阅读 · 1 评论 -
MYSQL 表索引
查看方式show create table users;show index from users;show keys from users;如下图所示: 说明Table 表的名称 Non_unique 如果索引不能包括重复词,则为0。如果可以,则为1 Key_name 索引的名称 Seq_in_index 索引中的列序列号,从1开始 Column_name 列名称 ...原创 2018-03-18 10:23:35 · 219 阅读 · 0 评论 -
windows下安装memcache
memcache是一个分布式的内存对象缓存系统,用于动态Web应用减轻数据库负载。通过在内存中缓存数据和对象来减少读取数据库的次数,从而提高大流量web应用的访问速度。Memcache基于一个存储键/值对的hashmap,格式简单,不支持list,array等复杂数据格式,提供的方法很少。工作流程: 先检查客户端的请求数据是否在memcache中,若存在,直接把请求数据返回即可,否则,查询数原创 2016-03-04 10:59:28 · 479 阅读 · 0 评论 -
MongoDB入门
MongoDB 是一个基于分布式文件存储的数据库。特点:开源、面向文档、非关系型、易于扩展、支持多类型数据存储。由 C++ 语言编写。旨在为 WEB 应用提供可扩展的高性能数据存储解决方案。MongoDB 是一个介于关系数据库和非关系数据库之间的产品。一、Windows下安装流程 1.官网下载msi安装包 2.安装,并将路径下的bin目录加入系统环境变量path中,方便命令的使用 3.win+原创 2016-01-14 20:58:41 · 419 阅读 · 0 评论 -
Yii2.0 中间表查询
yii2 中,中间表查询实现,是通过via 与 viaTable实现的。个人认为实现原理是一样的。 前提: user表 id course-enrollment表 course_id, user_id course表 id 要求:在course模型中实现查询:代码如下:via()函数:via() public method//定义relationpublic function getEn原创 2016-01-06 19:22:16 · 3213 阅读 · 0 评论 -
Scrapy爬虫数据存数据库
这里的爬虫代码是基于第一个爬虫程序【重写第一个爬虫程序】,由于是python3.6.4,所以不能使用mysqldb,那就采用pymysql。一、安装并测试pymysqlpip install pymysql在python cli下测试是否安装成功>>> import pymysql>>>测试与本地mysql数据库连接情况>&原创 2018-10-11 22:17:47 · 933 阅读 · 1 评论 -
SQL结构化查询语言
SQL,即Structure Query LanguageSQL共分为四类:数据查询语言DQL,数据操纵语言DML,数据定义语言DDL,数据控制语言DCL。1 数据查询语言DQLselect2 数据操纵语言DMLinsert,update,delete3 数据定义语言DDLcreate4 数据控制语言DCLgrant,revoke...原创 2018-06-24 00:54:47 · 204 阅读 · 0 评论 -
migration cannot add foreign key constraint
在yii2框架中,使用migration创建数据库表时,经常会遇到的问题。 具体问题描述大概如下图所示:定位General error即可。当然下面的说明和图不匹配,请自行理解。 假设如下:用户表user 主键是id; `id` int(11) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键'教师表instructor 有user_id字段; `user原创 2016-01-22 22:45:35 · 677 阅读 · 0 评论 -
Yii2.0 外键约束与数据级联删除
在Yii2.0框架中,利用migration文件创建数据库表时,经常需要对表中的字段进行外键约束处理:比如:teacher表中的数据必须是user表中的数据,那么在创建teacher表的时候就需要添加外键约束:CONSTRAINT `user_tenant` FOREIGN KEY (`tenant_dbu`) REFERENCES `tbl_tenant` (`dbu`)这种做法虽然正确,但会给后原创 2015-10-31 00:33:27 · 2627 阅读 · 0 评论 -
MySQL中delete,truncate与drop的区别
delete,truncate和drop是mysql数据库经常用到的删除操作命令。虽然都是删除操作,但对表的影响有很大不同。 相同点:都具有删除功能。 不同点:delete和truncate操作只删除表中数据,而不删除表结构;delete删除时对于auto_increment类型的字段,值不会从1开始,truncate可以实现删除数据后,auto_increment类型的字段值从1开始。但是d原创 2015-10-22 22:16:41 · 2511 阅读 · 0 评论 -
MYSQL 开启慢查询功能
mysql的慢查询功能能记录用户操作时符合条件的sql查询语句,并保存到文件,这样就可以定位到具体的效率低sql语句上,有助于我们改进sql语句的效率。开启慢查询,有两种方式:第一种是在mysql的配置文件中配置开启;#开启慢查询,设置sql查询时间限制#默认offslow_query_log = on #默认10slong_query_time = 0.5 #默认目录为mysql安装目录原创 2016-10-15 12:57:30 · 1142 阅读 · 0 评论 -
MySQL Explain详解
在日常工作中,我们会有时会开慢查询去记录一些执行时间比较久的SQL语句,找出这些SQL语句并不意味着完事了,些时我们常常用到explain这个命令来查看一个这些SQL语句的执行计划,查看该SQL语句有没有使用上了索引,有没有做全表扫描,这都可以通过explain命令来查看。所以我们深入了解MySQL的基于开销的优化器,还可以获...转载 2018-06-17 19:53:30 · 201 阅读 · 1 评论