MySQL

MySQL数据库查看数据表占用空间大小和记录数的方法

如果想知道MySQL数据库中每个表占用的空间、表记录的行数的话,可以打开MySQL的 information_schema 数据库。在该库中有一个 TABLES 表,这个表主要字段分别是: TABLE_SCHEMA : 数据库名 TABLE_NAME:表名 ENGINE:所使用的存储引擎 TABLES_ROWS:记录数 DATA_LENGTH:数据大小 INDEX_LENGTH:索引大小 其他字段请参考MySQL的手册,这几个字段对我们来说最有用。 一个表占用空间的大小,相当于是 数据大小 + [详细]

Mysql数据库使用concat函数执行SQL注入查询

SQL注入语句有时候会使用替换查询技术,就是让原有的查询语句查不到结果出错,而让自己构造的查询语句执行,并把执行结果代替原有查询语句查询结果显示出来。 例如:原本查询语句是 复制代码 代码如下: select username,email,content from test_table where user_id=uid;其中uid,是用户输入的。正常显示结果会出现用户名,用户邮箱,用户留言内容。但是如果uid过滤不严,我们可以构造如下SQL语句来获得任意数据表信息。 复制代码 代码如下: u [详细]

讲解MySQL中<=>操作符的用法

问题 : 我在看以前的一个开发者的代码时看到 WHERE p.name <=> NULL在这个查询语句中 <=>符号是什么意思啊?是不是和 =号是一样啊?还是一个语法错误啊?但是没有显示任何错误或者异常。我已经知道了mysql中的 <> = !=等符号。 最佳回答 : 和=号的相同点 像常规的=运算符一样,两个值进行比较,结果是0(不等于)或1(相等);换句话说:'A'<=>'B'得0和'a'<=>'a‘得1。 2.和=号的不 [详细]

MySQL实现批量插入以优化性能的教程

对于一些数据量较大的系统,数据库面临的问题除了查询效率低下,还有就是数据入库时间长。特别像报表系统,每天花费在数据导入上的时间可能会长达几个小时或十几个小时之久。因此,优化数据库插入性能是很有意义的。 经过对MySQL innodb的一些性能测试,发现一些可以提高insert效率的方法,供大家参考参考。 1. 一条SQL语句插入多条数据。 常用的插入语句如: INSERT INTO `insert_table` (`datetime`, `uid`, `content`, `type`) V [详细]

Windows下使用Cygwin编译MySQL客户端

MinTTY 是一个小巧但却很实用的 Cygwin 终端机,但有个严重的问题就是无法调用交互性的 Windows 原生程序,比如说 mysql.exe,当你在 MinTTY 中输入如下的命令: 复制代码 代码如下: $ mysql -uroot -p本来 mysql.exe 会提示输入密码,但在 MinTTY 中程序会直接挂起,不再响应,实际上即使在 -p 参数后面跟上密码,也是一样的。 某些程序,比如 python,会提供参数 -i,使自身在终端中进入交互模式,可惜并非所有的程序都有这样的参 [详细]

简单介绍MySQL中的事务机制

从一个问题开始 最近银行这个事情闹的比较厉害啊,很多储户的钱放在银行,就不翼而飞了,而银行还不管不问,说是用户的责任,打官司,用户还能输了,这就是“社会主义”。咱还是少发牢骚,多种树,莫谈国事。 说到银行存钱,就不得不说一下从银行取钱这件事情,从ATM机取钱这件简单的事情,实际上主要分为以下几个步骤: 登陆ATM机,输入密码; 连接数据库,验证密码; 验证成功,获得用户信息,比如存款余额等; 用户输入需要取款的金额,按下确认键; 从后台数据库中减掉用户账户上的对应 [详细]

几种MySQL中的联接查询操作方法总结

前言 现在系统的各种业务是如此的复杂,数据都存在数据库中的各种表中,这个主键啊,那个外键啊,而表与表之间就依靠着这些主键和外键联系在一起。而我们进行业务操作时,就需要在多个表之间,使用sql语句建立起关系,然后再进行各种sql操作。那么在使用sql写出各种操作时,如何使用sql语句,将多个表关联在一起,进行业务操作呢?而这篇文章,就对这个知识点进行总结。 联接查询是一种常见的数据库操作,即在两张表(多张表)中进行匹配的操作。MySQL数据库支持如下的联接查询: CROSS JOIN(交叉 [详细]

获取MySQL的表中每个userid最后一条记录的方法

如下表:CREATE TABLE `t1` ( `userid` int(11) DEFAULT NULL, `atime` datetime DEFAULT NULL, KEY `idx_userid` (`userid`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8;CREATE TABLE `t1` ( `userid` int(11) DEFAULT NULL, `atime` datetime DEFAULT NULL, KEY `idx_userid` [详细]

MySQL中按时间获取慢日志信息的方法

今天处理一个case: 数据库异常,连接数突增。 想着分析一下慢日志,可是一看慢日志都好几G了,而且是短日志格式,找到那个时间点相对比较难。于是写了一个脚本从慢日志按时间提取点日志。脚本: https://github.com/wubx/mysql-binlog-statistic/blob/master/bin/cutlogbytime 使用方法: 复制代码 代码如下:cutlogbytime #用于从慢日志用截取一个时间段的日志方便分析 ./cutlogbytime /path/slowl [详细]

在MySQL中使用mysqlbinlog flashback的简单教程

简介: mysqlbinlog flashback功能是淘宝彭立勋(http://www.penglixun.com/)的一个很强劲的作品. 主要功能: 对rows格式的binlog可以进行逆向操作.delete反向生成insert, update生成反向的update,insert反向生成delete.让dba同学们也有机会简单的恢复数据.可恢复:insert, update,delete相关的操作. 演示一下使用过程: 生成带有flashback mysqlbinlog 工具: 项止主页: [详细]

MySQL下的RAND()优化案例分析

众所周知,在MySQL中,如果直接 ORDER BY RAND() 的话,效率非常差,因为会多次执行。事实上,如果等值查询也是用 RAND() 的话也如此,我们先来看看下面这几个SQL的不同执行计划和执行耗时。 首先,看下建表DDL,这是一个没有显式自增主键的InnoDB表:[yejr@imysql]> show create table t_innodb_random\G *************************** 1. row ************************* [详细]

MySQL中从库延迟状况排查的一则案例

今天给一个客户巡检的情况下发从库没有业务的情况mysqld的cpu的一个core占用100%.查主库慢查询也没有关于写的SQL. 可以说是典的单进程复制把一个cpu占满造成的.知道原因了,就好分析了. 分析一下binlog中写的什么,看看有什么地方可以优化或是加速的.利用工具:pasrebinlog 利用show slave status\G; 查当前同步的到节点,然后对日值进行解析.git clone https://github.com/wubx/mysql-binlog-statisti [详细]

从MySQL的源码剖析Innodb buffer的命中率计算

按官方手册推荐Innodb buffer Hit Ratios的计算是: 100-((iReads / iReadRequests)*100) iReads : mysql->status->Innodb_buffer_pool_reads iReadRequests: mysql->status->Innodb_buffer_pool_read_requests出处: http://dev.mysql.com/doc/mysql-monitor/2.0/en/mem_graph [详细]

在MySQLDump中使用-w语句进行备份的方法

我们在用mysqldump备份数据时,有个选项是 –where / -w,可以指定备份条件,这个选项的解释是:-w, --where=name Dump only selected records. Quotes are mandatory我们可以做个测试,例如:mysqldump --single-transaction -w ' id < 10000 ' mydb mytable > mydump.sql这时候就可以备份出mytable表中 id< 10000 的所有记录了。假设我 [详细]

MySQL中DATE_FORMATE函数使用时的注意点

今天帮同事处理一个SQL(简化过后的)执行报错:mysql> select date_format('2013-11-19','Y-m-d') > timediff('2013-11-19', '2013-11-20'); ERROR 1267 (HY000): Illegal mix of collations (utf8_general_ci,COERCIBLE) and (latin1_swedish_ci,NUMERIC) for operati [详细]