数据库技术----MySQL
辛星
生命不息,奋斗不止。
展开
-
辛星浅谈mysql中的元数据
首先解释一下什么是元数据,所谓元数据,就是表示数据的数据,这些数据五花八门,总之,只要不是我们存储到数据库里的数据,大多都可以理解为元数据。那么我们如何来获取这些元数据呢? 总的来说,有三种思路,第一种,各种show,第二种,各种select,第三种,是mysql的命令行下的命令,不是sql语句。 我们首先看第一种,这里我列举一下大家比较熟悉的show语句的用法,其实咱们原创 2014-08-25 20:50:06 · 1534 阅读 · 2 评论 -
InnoDB Log checkpointing 和 dirty Buffer pool page的关系
原文链接:http://www.mysqlperformanceblog.com/2012/02/17/the-relationship-between-innodb-log-checkpointing-and-dirty-buffer-pool-pages/This is a time-honored topic, and there’s no shortage of articles转载 2016-01-16 13:58:39 · 534 阅读 · 0 评论 -
转载的InnoDB常见参数及其设置值
### 用来存放InnoDB的内部目录,对于大数据设置16M足够用innodb_additional_mem_pool_size = 16M ### InnoDB 缓存总大小设置,一般设置为系统内存的70%-80%innodb_buffer_pool_size = 12G ### 指定所有InnoDB数据文件的路径和大小分配innodb_data_fil转载 2016-01-16 14:34:01 · 406 阅读 · 0 评论 -
转载一篇很优秀的介绍innodb的两次写的文章
本篇文章是转载的,在翻译过程中,有些地方我也不敢苟同,觉得有些别扭,但是我也没找到更有效的翻译方式,因此还是尊重原著,保留了它们。https://www.percona.com/blog/2006/08/04/innodb-double-write/#more-72One of very interesting technique转载 2016-01-16 15:06:15 · 1215 阅读 · 0 评论 -
转载一篇MySQL读取缓存的文章
查询缓存的工作原理,基本上可以概括为: 缓存SELECT操作或预处理查询(注释:5.1.17开始支持)的结果集和SQL语句; 新的SELECT语句或预处理查询语句,先去查询缓存,判断是否存在可用的记录集,判断标准:与缓存的SQL语句,是否完全一样,区分大小写;查询缓存对什么样的查询语句,无法缓存其记录集,大致有以下几类:1、 查询语句中加了SQL_NO_CACHE参数;2、转载 2016-01-16 15:08:30 · 424 阅读 · 0 评论 -
转载一篇关于MySQL查询缓存的资料
查询缓存区(query cache)是Mysql 4.0版本后引入的一项功能,本意是提高SQL查询性能,即把某些SQL查询命令的结果存放在内存里,当其他用户再次执行一条完全相同的查询命令时,Mysql将会把缓存在内存里的查询结果直接发送给他,而不用再对数据库表进行查询。 但是并不是说查询缓存区就只有优点,而没有缺点,我举个例子,一个项目里如果是update, delete ,insert等转载 2016-01-16 15:14:18 · 444 阅读 · 0 评论 -
转载的一篇表缓存的文章
Mysql主要参数在优化MySQL时,有两个配置参数是最重要的,即table_cache和key_buffer_size。而具体到应用环境还有个查询参数query_cache_size直接影响查询性能。下面主要是整理的关于下面三个参数的文章1.table_cache 表缓存2.key_buffer_size 键缓冲3.query_cache_size查询缓存4.其他参数5.转载 2016-01-16 16:04:56 · 458 阅读 · 0 评论 -
辛星整理MySQL常见错误之1045,通常是密码过期
当我们登录MySQL数据库出现:Error 1045错误时,就表明你输入的用户名或密码错误被拒绝访问了。 最简单的解决方法就是将MySQL数据库卸载然后重装,但这样的缺点就是就以前的数据库中的信息将丢失,如果你不想重装,那么就需要找回密码或者重置密码。 解决的方法应该有多种,这里是一种操作简单的方法,适用于linux平台。 MySQL 1045:原创 2016-02-15 02:03:46 · 769 阅读 · 0 评论 -
转自MySQL官网的企业版的防火墙的一篇博客
原地址:http://dev.mysql.com/doc/mysql-security-excerpt/5.6/en/firewall-usage.htmlBefore using MySQL Enterprise Firewall, install it according to the instructions at Section 6.4.2, “Installing转载 2016-02-15 02:32:25 · 654 阅读 · 0 评论 -
安装xtrabackup的一次范例
[root@localhost ~]# rpm -Uhv http://www.percona.com/downloads/percona-release/percona-release-0.0-1.x86_64.rpmRetrieving http://www.percona.com/downloads/percona-release/percona-release-0.0-1.x86_64原创 2016-02-15 17:11:06 · 748 阅读 · 0 评论 -
对于SQLyog的2006错误的解决方式
使用SQLyog导入数据的时候可能会出现如下错误:Error Code:2006 -MySQL server has gone away通常是因为MySQL的参数设置的不够大,解决方式有两种:(1)在MySQL配置文件中加大设置,比如max_allowed_packet = 26M(2)在控制台修改,比如:SET GLOBAL max_allowed_packet=原创 2016-02-17 10:50:34 · 556 阅读 · 0 评论 -
转载的一篇关于2006错误的文章,还不错
mysql出现ERROR : (2006, 'MySQL server has gone away') 的问题意思就是指client和MySQL server之间的链接断开了。造成这样的原因一般是sql操作的时间过长,或者是传送的数据太大(例如使用insert ... values的语句过长, 这种情况可以通过修改max_allowed_packed的配置参数来避免,也可以在程序中将数据分转载 2016-02-17 10:54:52 · 411 阅读 · 0 评论 -
转载的一篇存储图片等信息的还不错的文章
商品图片,用户上传的头像,其他方面的图片。目前业界存储图片有两种做法:1、 把图片直接以二进制形式存储在数据库中一般数据库提供一个二进制字段来存储二进制数据。比如mysql中有个blob字段。oracle数据库中是blob或bfile类型 2、 图片存储在磁盘上,数据库字段中保存的是图片的路径。 一、图片以二进制形式直接存储在数据库中转载 2016-03-16 11:09:59 · 717 阅读 · 0 评论 -
简要整理下mysqldump
mysqldump是MYSQL提供的一个非常有用的数据库备份工具mysqldump命令执行时将数据库备份成一个文本文件该文件中实际上包含了多个CREATE 和INSERT语句使用这些语句可以重新创建表和插入数据mysqldump的语法和选项mysqldump -u user -p pwd -h host dbname[tbname,[tbname...]]>filena原创 2016-02-17 14:36:11 · 404 阅读 · 0 评论 -
整理一下MySQL中的结构和数据的复制操作
1、复制表结构及数据到新表CREATE TABLE 新表 SELECT * FROM 旧表 这种方法会将oldtable中所有的内容都拷贝过来 它没有了旧表的primary key、Extra(auto_increment)等属性 2、只复制表结构到新表 CREATE TABLE 新表 SELECT * FROM 旧表 WHERE 1=2 CREAT原创 2016-03-17 10:03:07 · 360 阅读 · 0 评论 -
MySQL1236错误的解决方式
数据库主从出错: Slave_IO_Running: No 一方面原因是因为网络通信的问题也有可能是日志读取错误的问题。以下是日志出错问题的解决方案: Last_IO_Error: Got fatal error 1236 from master when reading data from binary log: 'Could not find first log file nam转载 2016-02-23 10:06:47 · 8753 阅读 · 0 评论 -
辛星浅析mysql中的单词的局部修改
这里只是一个范例,比如我们要把题池中的新概念第一次册的名称都用中考词汇来代替,就可以使用如下的方式,也就是使用一个replace函数,范例如下:UPDATE `t_tb_pool` SET `char64_testbank_name` = REPLACE(`char64_testbank_name`, '新概念英语第一册', '中考词汇') WHERE ubint64_no >原创 2015-11-13 11:47:20 · 462 阅读 · 0 评论 -
辛星浅析utf8和utf8mb4
对于mysql来说,在中国,我们通常选择的有utf8和gbk,但是在MySQL5.5版本之后,开始支持utf8mb4字符集,这里就浅析一下utf8和utf8mb4的区别。 首先说一下utf8mb4是utf8的一个超集,它完全兼容utf8字符集。以往mysql里面的utf8字符集的一个字符最多只有3个字节,只支持bmp这部分的unicode编码区,而utf8mb4则扩展到一个字符最多原创 2015-09-14 14:48:58 · 879 阅读 · 0 评论 -
辛星浅析MySQL中的last_insert_id()
很多时候,我们在插入一条数据的时候,我们需要知道它的主键是多少,它会自动返回最后一个insert并且为auto_increment列位置的第一个发生的值。 而且需要注意的是产生的id每次连接后保存在服务器中,这意味着函数向一个给定客户端返回的值就是该客户端产生对影响auto_increment列的最新语句后的第一个auto_increment值。 而且这个值不会被其他原创 2015-08-21 15:11:09 · 714 阅读 · 0 评论 -
辛星浅谈mysql中的数据碎片以及引擎为MyISAM下的操作
对于mysql中的数据碎片,其实和我们删除数据是息息相关的,删除数据的时候必然会在数据文件中造成不连续的空白空间,对于少量的数据的删除,并不会产生多少的空白空间。如果在一段时间内的大量的删除操作,会使得这种留空的空间变得比存储列表内容所使用的空间更大。可能有人会说,我们向数据库中插入数据的时候,会不会在这些空白空间中插入数据呢?答案是会的。但是,它会造成一个后果,那就是数据的存储位置不连续,以及物原创 2014-08-25 13:26:24 · 1386 阅读 · 0 评论 -
辛星解读mysql的用户管理
可能做开发的多半不太关注这方面,但是要说到做运维,那就不能不关注了。因为我们都知道,root的权限太大了,不是随便能用的,我们平时最好用一些比较低的权限的用户,这样会让我们的安全性大大提高,也能防止我们平常中因为误操作而造成不必要的损失。 首先我们需要查看mysql中的所有账户,我们在mysql数据库中的user表中查看信息即可,但是呢,由于我们直接select * from use原创 2014-08-25 22:56:11 · 1030 阅读 · 0 评论 -
辛星解读mysql中的MyISAM引擎
很多以前的教科书上都是写的MyISAM是mysql的默认存储引擎,其实自从mysql5.5开始,默认存储引擎就已经改变成为InnoDB了,由于InnoDB在很多方面有着不可替代的功能,因此,很多人喜欢研究InnoDB也在情理之中,我也很喜欢InnoDB。但是呢,对于MyISAM,就跟着辛星辛博士来认识一下吧。 第一点就是MyISAM不支持事务和外键,也正是基于这一点,很多人不喜欢My原创 2014-08-26 13:57:20 · 1073 阅读 · 0 评论 -
辛星解读mysql中的存储过程的优劣
我们常用的SQL语句在执行的时候需要首先进行编译,然后执行,而存储过程则是一组为了完成特定功能的SQL语句集,它直接编译好了存储在数据库中,用户通过指定存储过程的名字即可调用该存储过程。 存储过程的优点主要包括以下几点: 第一点,性能提高。这是相对于不适用存储过程来说的,因为存储过程在创建的时候就编译好了,而后每次调用都不会再次编译,这相对于传统的SQL语句中每次调用都原创 2014-08-26 14:58:31 · 1325 阅读 · 0 评论 -
辛星让mysql跑的更快第一节之优化的方向和数据库建模
最近计划写一套书目,也就是关于mysql的优化的,那么首先在博客上写写,然后整理成pdf的文档的形式,当然也期待各位的关注了。对于mysql的优化是一个比较大的话题,可优化的地方也很多,大致想了一下,可以从这些地方下手。 首先就是硬件层次,包括选择合适的操作系统、选择合适的硬件,然后就是源码层次,不过虽然mysql是开源的,但是能够修改其源代码的公司虽然不少,但是也没有那么多,但是我们原创 2014-08-15 09:46:23 · 1422 阅读 · 2 评论 -
辛星让mysql跑得更快第二节之索引上部分
如果把我们的数据库信息当做一本书或者一个字典,那么索引可以理解为它的目录,如果我们创建一个优秀的目录,那么我们检索信息就会快得多,如果我们创建一个渣渣索引,也有可能拖垮整个系统。 索引我们分为四类,通常分为四大类型,即主键索引、全文索引、唯一索引、普通索引,这是按照索引的类型来分的。所谓主键索引,那就是当我们创建一张表的时候,如果我们指定了一个主键,那么它就自动成为主键索引,比如原创 2014-08-15 11:39:06 · 827 阅读 · 0 评论 -
辛星mysql教程开始动工了
老是youren原创 2014-08-15 03:01:22 · 1181 阅读 · 4 评论 -
辛星浅析数据库中的几种关键字
首先就是候选关键字,它指的是,在给定关系中,具有唯一标识特性的一个或者多个属性被称为该关系的候选关键字。比如学生有身份证号和学号,那么这两个都可以作为学生这个实体的候选关键字。 然后就是主关键字,它也是一种候选关键字,它是被挑选出来的,作为行的唯一标识的候选关键字。一个表只能有一个主关键字,主关键字又可以称为主键,主键可以由一个字段,也可以有多个字段组成,分别称为单字段主键和多字段主原创 2015-02-05 23:31:00 · 1053 阅读 · 0 评论 -
辛星笔记之MySQL的InnoDB部分的四本笔记
第一本就是InnoDB的事务实现机制,在csdn上的下载地址为:点我下载 ,这里简要介绍下,它是通过redo和undo来控制的,而且每一秒钟都会把日志缓冲刷新到重做日志文件,因此对于再大的事务提交也非常快捷。对于undo日志,它则是用于事务的回滚,它在共享表空间中有自己的undo段。对于事务的隔离级别,是通过锁来实现的,因此这就需要理解InnoDB的锁机制。其中还有对分布式事务即xa的部分介绍。原创 2015-01-18 14:03:06 · 1620 阅读 · 2 评论 -
辛星解读之数据字典
在介绍数据字典之前,我们先介绍一下数据流图,所谓的数据流图也就是Data Flow Diagram,简称即DFD,它从数据传递和加工的角度,用图形的方式来表达系统的逻辑功能、数据在系统内部的逻辑流向和逻辑变换过程,它也是结构化系统分析方法的主要表达工具以及用于表示软件模型的一种图示方法。 数据流图是一种功能模型,它通常在需求分析阶段产生,它描绘的就是信息流和数据从输入到输出的过程中所经历原创 2015-02-06 17:14:52 · 1302 阅读 · 0 评论 -
辛星浅析乐观锁和悲观锁
有个网友问我乐观锁和悲观锁的相关问题,于是就来阐述一下这个问题。首先说乐观锁,它是Pessimistic Lock的简写,也就是所谓的悲观锁。它是每次取数据的时候都会认为别人会修改它的数据,因此它是在每次取数据之前都会进行加锁操作,这样别人拿数据的时候就必须等待直到它释放锁。其实我们的关系型数据库中就用到了很多这种锁机制,比如行锁、表锁、写锁等等,都是在操作之前首先加一个锁。原创 2015-08-19 18:51:21 · 776 阅读 · 2 评论 -
辛星浅析InnoDB的MVCC实现
首先说的是MVCC是一种思想,每种数据库在具体的实现上都会有所不同。而InnoDB的MVCC,是通过在每行记录保存两个隐藏列来实现的。而这两个列,一个是保存创建的版本,一个是保存删除的版本。 每当我们开始一个新的事务时,系统版本号都会自动递增。事务开始时刻的系统版本号会作为事务的版本号,我们可以用它来和查询到的每行记录版本号作比较。下面我们以可重复读这个隔离级别下的一个范例来进行说原创 2015-08-19 19:05:31 · 743 阅读 · 3 评论 -
辛星解读一次在mysql中获取排名的实例
这里并没有考虑到绑定,因此我们还是使用拼凑sql语句的形式,而且并不是在mysql命令行中书写的,很多条件我们都直接用具体的数据来代替。 首先交代一下需求: (1)作业保存在t_score表中,练习保存在t_exercise表中。 (2)我们需要从练习表和作业表中取出对应的学生成绩,而学生信息保存在t_user表中。 (3)需要知道某个学生根据某道题原创 2015-09-09 10:45:38 · 652 阅读 · 0 评论 -
辛星浅析utf8中比较常见的utf8校对集
目前来说,utf8编码已经被广大开发者所接受,特别是一些国际产品,为了更好的支持国际化,支持utf8是最好的选择。今天说的就是MySQL中对utf8编码的校对集的选择。 通常我们选择的比较多的是utf8_general_ci,其中的ci是case insensitive的缩写,表示大小写不敏感。 为了区分大小写,我们可以使用utf8_general_cs,其中cs是c原创 2015-09-05 18:05:18 · 665 阅读 · 0 评论 -
辛星简译MySQL中的last_query_cost
我们都知道在MySQL中可以通过show status like 'last_query_cost' 来查看查上一个查询的代价,而且它是io_cost和cpu_cost的开销总和,它通常也是我们评价一个查询的执行效率的一个常用指标。 下面是一段英文解释: The total cost of the last compiled query as computed翻译 2015-08-21 13:24:29 · 3956 阅读 · 0 评论 -
mariadb启动报错的一个案例
今天安装了mariadb,在启动时报错如下:[root@iZ284mvmum4Z bin]# mysqld_safe160608 09:18:25 mysqld_safe Logging to '/var/log/mariadb/mariadb.log'.160608 09:18:25 mysqld_safe Starting mysqld daemon with databases原创 2016-06-08 10:00:00 · 15328 阅读 · 1 评论