
数据库-mysql
文章平均质量分 76
记录mysql相关技术
赶路人儿
一个十年以上编程人员,擅长使用java、python、C++等语言,具有广告投放、个性化推荐引擎等超大规模系统开发经验。
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
Mysql在大表中删除大量数据的优化
假设有一个表有3000万条记录,需要在业务不停止的情况下删除其中status=1的所有记录,差不多有600万条。如果直接使用delete from tab_name where status=1;会触发lock wait timeout exceed的错误,因为这条语句涉及的记录数太多。执行过程DDL语句,删除整张表和表结构,以及表的索引、约束和触发器。DDL语句,只删除表数据,表的结构、索引、约束等会被保留。DML语句,删除表中数据回滚不可不可可以事务。原创 2023-04-25 11:14:29 · 6762 阅读 · 0 评论 -
Mysql Nested-Loop Join算法和MRR
BNL 主要针对被驱动表关联字段无索引时的优化,(当被驱动表没有索引或索引失效时,无法是用INLJ,mysql就会通过BNL进行优化)如果在EXPLAIN输出中,当Extra值包含Using join buffer(Block Nested Loop)且type值为ALL,index或range时,表示使用BNL;也说明被驱动表的表关联字段缺少索引或索引失效无法有效利用索引。BNL 算法是对 SNLJ 算法的优化,并且可将该算法 BNL 提升至 INLJ 进行优化。原创 2023-03-03 11:06:03 · 1793 阅读 · 0 评论 -
mysql分区表
mysql分区相对于mysql分库分表便利很多,可以对现有的mysql大表添加分区,也可以对已有分区的表扩充分区。值得注意的是我们再用sql查询时,必须加上开始时间和结束时间的查询条件,将查询区间限制到相应的分区,否则会遍历所有分区。分区方法将某张表的数据,分别存储到不同的区域中。每个分区都是独立的表,都要存储该分区数据的数据、索引等信息。使用mysql的分区功能,可以把一个大的数据表分成多个小份,用户不需要区分不同的表名。表中有主键的时候,分区只能使用主键1、KEY 分区,按照某个字段取余原创 2022-03-16 15:10:29 · 998 阅读 · 0 评论 -
mysql主从复制
1、默认主从复制Mysql的复制原理大致如下:主库记录binlog日志:在每次准备提交事务完成数据更新前,主库将数据更新的事件记录到二进制日志binlog中。主库上的sync_binlog参数控制binlog日志刷新到磁盘。 从库IO线程将主库的binlog日志复制到其本地的中继日志relay log中:从库会启动一个IO线程,IO线程会跟主库建立连接,然后主库会启动一个特殊的二进制转储线程(binlog dump),二进制转储线程会读取主库上binlog中的事件,它不会一直对事件进行轮询,当它追原创 2021-10-11 14:42:29 · 292 阅读 · 0 评论 -
mysql索引优化 & 最左匹配 & 索引下推
联合索引的存储1)联合索引结构:表T1有字段a,b,c,d,e,其中a是主键,除e为varchar其余为int类型,并创建了一个联合索引idx_t1_bcd(b,c,d)。其内容如下:InnoDB首先会使用主键创建一个主键B+树索引和数据文件,此外还会通过联合索引(b,c,d)生成一个索引树,同样是B+树的结构,只不过它的data部分存储的是联合索引所在行的主键值(上图叶子节点紫色背景部分),这里要注意,对于InnoDB存储引擎,辅助索引data部分存储主键值。对于联合索引来说只不过比.原创 2021-05-29 18:16:40 · 1751 阅读 · 3 评论 -
mysql float、decimal类型介绍
一、浮点数:float和double类型表示近似数字数据值(浮点数),前者是单精度mysql用4个字节存储,后者是双精度用8个字节存储。对于浮点数,SQL标准允许在浮点数后跟一个括号来指定精度(以位为单位,而不是指数的范围),例如:float(p)。 mysql也支持此可选的精度规范,float(p)中的精度值仅用于确定存储大小,从0到23的精度导致4字节单精度float列;从24到53的精度导致8字节的双精度double列。mysql还允许使用非标准语法:float(M,D)或real(M,D原创 2020-08-14 11:44:23 · 5494 阅读 · 0 评论 -
在线数据库关系图设计工具 dbdiagram.io
dbdiagram.io是holistics.io这款商业产品的社区版。是一款在线关系型数据库ER图设计系统,特点:使用DSL语言,可以简单快速地创建数据库关系图; Online :不需要安装软件,方便快捷,而且支持拖动和调节,使用Google/github账号登录,可以在线保存设计好的图 Import/Export : 支持导出DDL SQL和PDF,支持导入外部数据 Share : 可以生成一个分享链接,方便团队成员协作语法:1、创建表:Table users { id i原创 2020-06-01 17:57:16 · 6114 阅读 · 0 评论 -
left join整理
一、left join基本语句:我们先看两张表,用户表:mysql> select * from user_test;+----+------+-----+-----+| id | name | sex | age |+----+------+-----+-----+| 1 | 张三 | 1 | 26 || 2 | 王五 | 2 | 30 || 3 | 李四 | 1 | 33 || 4 | 兰儿 | 2 | 30 |+----+------+-原创 2020-05-12 21:05:20 · 8972 阅读 · 1 评论 -
double write buffer——mysql
MySQL的buffer一页的大小是16K,文件系统一页的大小是4K,也就是说,MySQL将buffer中一页数据刷入磁盘,要写4个文件系统里的页。如上图所示,MySQL里page=1的页,物理上对应磁盘上的1+2+3+4四个格。那么,问题来了,这个操作并非原子,如果执行到一半断电,会不会出现问题呢?会,这就是所谓的“页数据损坏”。如上图所示,MySQL内page=1的...转载 2019-12-12 15:02:18 · 3734 阅读 · 6 评论 -
Cobar使用文档(可用作MySQL大型集群解决方案)
最近好不容易抽空研究了下Cobar,感觉这个产品确实很不错(在文档方面比Amoeba强多了),特此推荐给大家。Cobar是阿里巴巴研发的关系型数据的分布式处理系统,该产品成功替代了原先基于Oracle的数据存储方案,目前已经接管了3000+个MySQL数据库的schema,平均每天处理近50亿次的SQL执行请求。首先,使用Cobar的核心功能如下:分布式:Cobar的分布式主要转载 2014-05-07 17:16:40 · 721 阅读 · 0 评论 -
使用mysql federated引擎构建MySQL分布式数据库访问层
使用mysql federated 引擎构建 MySQL 分布式数据库访问层 前言:随着应用复杂度的增加,数据库不断细化切分,导致应用程序中数据库应用就得复杂,凌乱。绝大部分程序人员可能都遇到这种情况,应用程序中需要连接多台数据库服务器,进行相应的操作。随着时间积累,太多的数据库服务器的连接逻辑出现在程序之中,这给程序的维护扩展,数据库维护工作带来极大的工作量。转载 2014-05-15 15:36:37 · 813 阅读 · 0 评论 -
MySQL数据库上配置Federated引擎的方法
1.查看是否安装了federated引擎 输入命令:show engines;转载 2014-05-15 15:51:34 · 3439 阅读 · 0 评论 -
mysql 数据文件介绍
一、MySQL数据库文件介绍MySQL的每个数据库都对应存放在一个与数据库同名的文件夹中,MySQL数据库文件包括MySQL所建数据库文件和MySQL所用存储引擎创建的数据库文件。1、MySQL创建并管理的数据库文件:.frm文件:存储数据表的框架结构,文件名与表名相同,每个表对应一个同名frm文件,与操作系统和存储引擎无关,即不管MySQL运行在何种操作系统上,使用何种存储引擎,转载 2014-07-15 18:18:51 · 1580 阅读 · 0 评论 -
Mysql 查看连接数,状态
命令: show processlist; 如果是root帐号,你能看到所有用户的当前连接。如果是其它普通帐号,只能看到自己占用的连接。 show processlist;只列出前100条,如果想全列出请使用show full processlist; mysql> show processlist; 命令: show status;命令:show stat转载 2014-06-04 10:40:54 · 685 阅读 · 0 评论 -
linux mysql安装
一、下载MySQL安装文件 完全安装MySQL需要下面6个文件: MySQL-server-community-5.1.26-0.rhel4.i386.rpm MySQL-client-community-5.1.26-0.rhel4.i386.rpm MySQL-shared-community-5.1.26-0.rhel4.i386.rpm MySQL-转载 2014-06-04 10:44:44 · 686 阅读 · 0 评论 -
mysql 权限
mysql 添加用户访问权限grant 权限 on 数据库对象 to 用户 passwordmysql> grant all on *.* to root@"%" identified by 'abc123';Query OK, 0 rows affected (0.01 sec)mysql> select host,User,password from us转载 2014-06-05 11:31:29 · 652 阅读 · 0 评论 -
MySQL 递归查询树状表的所有子节点、所有父节点具体实现
CREATE FUNCTION `getChildList`(rootId INT) RETURNS varchar(1000) BEGIN DECLARE sChildList VARCHAR(1000); DECLARE sChildTemp VARCHAR(1000); SET sChildTemp =cast(rootId as CHAR); WHILE sChil转载 2014-06-24 15:40:31 · 3540 阅读 · 0 评论 -
mysqldumpslow和mysqlsla分析mysql慢查询日志
Windows下开启MySQL慢查询MySQL在Windows系统中的配置文件一般是是my.ini找到[mysqld]下面加上log-slow-queries = F:\MySQL\log\mysqlslowquery.loglong_query_time = 2Linux下启用MySQL慢查询MySQL在Windows系统中的配置文件一般是是my.cnf找到[mysq转载 2014-07-16 11:15:19 · 705 阅读 · 0 评论 -
mysql的sql调优: slow_query_log_file
mysql有一个功能就是可以log下来运行的比较慢的sql语句,默认是没有这个log的,为了开启这个功能,要修改my.cnf或者在mysql启动的时候加入一些参数。如果在my.cnf里面修改,需增加如下几行long_query_time = 1log-slow-queries = /var/www/slow.loglog-queries-not-using-indexesl转载 2014-07-15 16:23:59 · 3513 阅读 · 0 评论 -
mysql中split函数
在mysql中并没有split函数,需要自己写:1)获得按指定字符分割的字符串的个数: Sql代码 DELIMITER $$ DROP FUNCTION IF EXISTS `sims`.`func_get_split_string_total`$$ CREATE DEFINER=`root`@`localhost`转载 2014-05-29 15:27:31 · 3955 阅读 · 0 评论 -
mysql 创建函数报错:This function has none of DETERMINISTIC, NO SQL解决办法
This function has none of DETERMINISTIC, NO SQL解决办法创建存储过程时出错信息:ERROR 1418 (HY000): This function has none of DETERMINISTIC, NO SQL, or READS SQL DATA in its declaration and binary loggin转载 2014-05-29 15:28:21 · 1870 阅读 · 0 评论 -
mysql explain详解
explain显示了mysql如何使用索引来处理select语句以及连接表。可以帮助选择更好的索引和写出更优化的查询语句。先解析一条sql语句,看出现什么内容EXPLAINSELECTs.uid,s.username,s.name,f.email,f.mobile,f.phone,f.postalcode,f.addressFROM uchome_space ASs,uchom转载 2014-07-07 17:52:45 · 581 阅读 · 0 评论 -
MySQL按照汉字的拼音排序
按照汉字的拼音排序,用的比较多是在人名的排序中,按照姓氏的拼音字母,从A到Z排序; 如果存储姓名的字段采用的是GBK字符集,那就好办了,因为GBK内码编码时本身就采用了拼音排序的方法(常用一级汉字3755个采用拼音排序,二级汉字就不是了,但考虑到人名等都是常用汉字,因此只是针对一级汉字能正确排序也够用了)。直接在查询语句后面 添加 order by name asc; 查询转载 2014-07-08 17:32:49 · 1346 阅读 · 0 评论 -
mysql 启动错误-server PID file could not be found
[root@centos var]# service mysqld stopMySQL manager or server PID file could not be found! [FAILED]解决办法:首先查看一下进程[root@irxpert-test /]# ps aux |grep mysq*root 10274 0.0原创 2014-07-07 17:34:39 · 1089 阅读 · 0 评论 -
如何跟踪mysql执行的sql语句
修改my.cnf,在mysqld下添加log一行,[mysqld] log = /tmp/mysqld.sql然后,重新启动mysql,tail -f /tmp/mysqld.sql,就可以实时看到myql服务器当前正在执行的语句了。转载 2014-07-07 17:38:33 · 1029 阅读 · 0 评论 -
理解MySQL——索引与优化
写在前面:索引对查询的速度有着至关重要的影响,理解索引也是进行数据库性能调优的起点。考虑如下情况,假设数据库中一个表有10^6条记录,DBMS的页面大小为4K,并存储100条记录。如果没有索引,查询将对整个表进行扫描,最坏的情况下,如果所有数据页都不在内存,需要读取10^4个页面,如果这10^4个页面在磁盘上随机分布,需要进行10^4次I/O,假设磁盘每次I/O时间为10ms(忽略数据传输时间),转载 2014-06-19 15:49:48 · 621 阅读 · 0 评论 -
mysql的replace into 用法
在向表中插入数据的时候,经常遇到这样的情况:1. 首先判断数据是否存在; 2. 如果不存在,则插入;3.如果存在,则更新。在 SQL Server 中可以这样处理: if not exists (select 1 from t where id = 1) insert into t(id, update_time) values(1, getdate()) els原创 2014-07-30 17:11:26 · 723 阅读 · 0 评论 -
解决MYSQL出现Can't create/write to file....
今天我上网站的管理后台,登录时提示根据从网上搜索问题提示和自己遇到的情况分析、解决办法如下:说明:出现这个问题是由于服务器环境不允许执行数据库校验,无法进行此操作。解决思路和原因:1、权限问题 C:/WINDOWS/TEMP文件夹权限不够,最少要给出USERS组的可读可写权限、要不就给everyone权限也可以;2、文件太大 C:/WINDOWS/TEMP文件夹原创 2014-07-15 15:38:54 · 69855 阅读 · 4 评论 -
mysql的sql调优:general_log_file
上周在协助开发排查问题时用到general.log,网上已经有完整的步骤就不额外整理;转载一下 :) 原文url:http://shanchao7932297.blog.163.com/blog/static/1363624201122351847166/常常遇到这样的问题:数据库访问量很大,想要从SQL方面进行优化。往往开发同学会问:能看到哪些SQL执行比较频繁吗?回道:不能哦,只能看到当前正在转载 2014-07-15 16:36:07 · 5402 阅读 · 0 评论 -
mysql报错:1030 - Got error 28 from storage engine
mysql报错:1030 - Got error 28 from storage engine一般都是由于空间不足导致,清理空间以后即可。root@websites ~]# df -lhFilesystem 容量 已用 可用 已用% 挂载点/dev/mapper/VolGroup00-LogVol00原创 2014-07-15 15:56:42 · 2288 阅读 · 0 评论 -
Mysq性能分析总结 —— Genral log(普通日志)与 Slow log(慢速日式)
对Mysql进行深入的分析对于发现mysql性能瓶颈和寻找优化策略是十分必要的。 我们可以从不同的粒度上对Mysql进行分析:可以整体分析服务器,或者检查单个查询或批查询。通过分析,我们得到的如下信息:1、Mysql访问得最多的数据2、Mysql执行得最多的查询的种类3、Mysql停留时间最长的状态4、Mysql用来执行查询的使用得最频繁的子系统5、Mysql查询过程中访问转载 2014-07-15 17:58:54 · 901 阅读 · 0 评论 -
如何修改mysql数据库文件的路径
在网上找了好多,没有确定哪个是最终的答案,由于网站在运行中,实在不敢轻易动手,怎么奈我是个菜鸟呢!先把找到的东西简单记录一下,回头再说!供参考的:http://bbs.chinaunix.net/thread-1230795-1-1.html还有一个:首先在数据库里看一下数据库里当前数据文件的存放路径:mysql> show variables like '%dir转载 2014-07-15 18:16:54 · 1136 阅读 · 0 评论 -
mysql之status和variables区别
mysql之status和variables区别 首先可以通过下属两个命令来查看mysql的相应的系统参数show status like '%abc%';show variables like '%abc%'; 但是很多人不明白二者到底有什么区别status是状态是系统的状态不可更改,是系统现在的运行状态参数,说明如下:Java代码转载 2014-08-20 14:07:04 · 801 阅读 · 0 评论 -
MySQL数据库中的日志文件---(3)慢查询日志
2.2 慢查询日志(The Slow Query Log) 慢查询日志指的是,所有SQL执行时间超过long_query_time变量指定值的语句,以及达到min_examined_row_limit条记录的语句。SQL语句执行时间不包含初始化表锁的开销。SQL语句执行完毕并且完成对其锁定资源的释放后,mysqld会将符合条件的SQL语句写入慢查询日志,因此慢查询日志中语句记录和顺序有可转载 2014-08-20 16:27:50 · 795 阅读 · 0 评论 -
MySQL高速缓存启动方法及参数详解——query_cache
MySQL query cache从4.1版本开始提供了,不过值今天本人才对其进行研究。默认配置下,MySQL的该功能是没有启动的,可能你通过show variables like ‘%query_cache%’;会发现其变量have_query_cache的值是yes,MYSQL初学者很容易以为这个参数为YES就代表开启了 查询缓存,实际上是不对的,该参数表示当前版本的MYSQL是否支持Qu转载 2014-08-20 11:56:36 · 1899 阅读 · 1 评论 -
mysql cache调试笔记
【mysql cache调试笔记】1 可以使用下列命令开启mysql的select cache功能:SET GLOBAL query_cache_size = 102400000;因为当query_cache_size默认为0时,是不开启cache功能的。 2 调试:查看cache的设置:show variables like '%query转载 2014-08-20 11:57:43 · 723 阅读 · 0 评论 -
mysql 基于binlog进行恢复
1.binlog日志打开方法在my.cnf这个文件中加一行(Windows为my.ini)。#vi /etc/my.cnf[mysqld]log-bin=mysqlbin-log #添加这一行就ok了=号后面的名字自己定义吧 然后我们可以对数据库做简单的操作后到mysql数据文件所在的目录来看binlog文件。转载 2014-06-27 16:49:07 · 780 阅读 · 0 评论 -
服务器上有sql状态 Waiting for query cache lock
query cache 的lock是一个全局的锁,所以当你的写入并发和读取并发都很大的时候,这个锁是一个主要竞争点。特别是当某个表因为写入而导致cache失效的时候,也会去获取全局锁,总体来说效率不是很高。是不是开,就看你的业务情况而定了原创 2014-08-20 12:02:47 · 6181 阅读 · 0 评论 -
linux mysql 报错:MYSQL:The server quit without updating PID file
1.可能是/usr/local/mysql/data/rekfan.pid文件没有写的权限解决方法 :给予权限,执行 “chown -R mysql:mysql /var/data” “chmod -R 755 /usr/local/mysql/data” 然后重新启动mysqld!2.可能进程里已经存在mysql进程解决方法:用命令“ps -ef|grep mysqld”查看是转载 2014-08-20 15:15:20 · 687 阅读 · 0 评论 -
MySQL死锁导致无法查询
客服反馈后台无法查询,原因大概知道,是因为MySQL的事务产生了死锁,以往都不知道是哪个事务锁住了,只能很粗暴地重启MySQL最近查找到一个方法,不用重启MySQL,记录如下登录到MySQL,来看下有哪些MySQL事务可以看到一个时间持续了比较久的事务,现在时间是13点了,而这个事务的开始时间是2012-11-09 12:15:14,显然是不正常的,我们看这个事务对应的mysql的转载 2014-08-20 16:51:09 · 963 阅读 · 0 评论