MySQL

关于MySQL的整型数据的内存溢出问题的应对方法

今天接到一个朋友电话说是觉的数据库被别人更改了,出现数据不对的问题 。经过很久的排查是数据类型溢出了(发生问题的版本是MySQL 5.1)。后来通过给朋友那边把MySQL 5.1升级到MySQL 5.5去解决这个问题。 这也让我有兴趣去了解一下MySQL不同版本数据类型溢出的处理机制。 先看一下MySQL支持的整型数及大小,存储空间:另外请记着mysql的数据处理会转成bigint处理,所以这里就用bigint几个测试:SELECTCAST(0ASUNSIGNED)-1;SELECT92233 [详细]

MySQL中修改库名的操作教程

MySQL在5.1引入了一个rename database操作,但在MySQL5.1.23后又不支持这个命令。可以说是一个实验性的功能,没有在生产中支持过(mysql-5.1 release在mysql-5.1.30),那么生产中我们有时为了追求完美需要改一下库名。怎么操作呢? 这里提供一个变通的方法。 1. 创建出新库名:mysql>create database db_v2;mysql>create database db_v2;2.生成rename语句,从olddb里迁移,我这里oldd [详细]

MySQL中truncate误操作后的数据恢复案例

实际线上的场景比较复杂,当时涉及了truncate, delete 两个操作,经确认丢数据差不多7万多行,等停下来时,差不多又有共计1万多行数据写入。 这里为了简单说明,只拿弄一个简单的业务场景举例。 测试环境: Percona-Server-5.6.16 日志格式: mixed 没起用gtid 表结构如下:CREATE TABLE `tb_wubx` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(32) DEFAULT NULL [详细]

php简单操作mysql数据库的类

本文实例讲述了php简单操作mysql数据库的类。分享给大家供大家参考。具体如下:<php /*** Database class** @version: 2.2* @revised: 27 may 2007***/ class Database {var $host;var $name;var $user;var $pass;var $prefix;var $linkId;function Database($mysql) {foreach($mysql as $k => $v){$this [详细]

PHP使用mysqldump命令导出数据库

PHP使用外部命令导出数据库,代码很简单,就不多废话了<php// $dumpFileName目录要有可写权限$DbHost = 'localhost';$DbUser = 'root';$DbPwd = '123456';$DbName = 'a';$fileName = $DbName . '_MySQL_data_backup_' . date('YmdHis) . '.sql';$dumpFileName= "/var/$fileName";header("Content-Dispo [详细]

初步介绍MySQL中的集合操作

啥是集合操作? 通常来说,将联接操作看作是表之间的水平操作,因为该操作生成的虚拟表包含两个表中的列。而我这里总结的集合操作,一般将这些操作看作是垂直操作。MySQL数据库支持两种集合操作:UNION DISTINCT和UNION ALL。 与联接操作一样,集合操作也是对两个输入进行操作,并生成一个虚拟表。在联接操作中,一般把输入表称为左输入和右输入。集合操作的两个输入必须拥有相同的列数,若数据类型不同,MySQL数据库自动将进行隐式转换。同时,结果列的名称由左输入决定。 前期准备 准备测试表t [详细]

详细讲述MySQL中的子查询操作

继续做以下的前期准备工作: 新建一个测试数据库TestDB; create database TestDB; 创建测试表table1和table2;CREATE TABLE table1(customer_id VARCHAR(10) NOT NULL,city VARCHAR(10) NOT NULL,PRIMARY KEY(customer_id))ENGINE=INNODB DEFAULT CHARSET=UTF8;CREATE TABLE table2(order_ [详细]

将MySQL的临时目录建立在内存中的教程

MySQL 系统会在内存(MEMORY)和磁盘(MyISAM)中建立临时表,如何能知道在磁盘中建立了多少临时表以及在内存中建立多少临时表呢?你可以通过下面命令获知: mysql> SHOW GLOBAL STATUS LIKE 'Created_tmp%tables'; +-------------------------+----------+ | Variable_name | Value | +-------------------------+----------+ | [详细]

分析MySQL中优化distinct的技巧

有这样的一个需求:select count(distinct nick) from user_access_xx_xx; 这条sql用于统计用户访问的uv,由于单表的数据量在10G以上,即使在user_access_xx_xx上加上nick的索引, 通过查看执行计划,也为全索引扫描,sql在执行的时候,会对整个服务器带来抖动;root@db 09:00:12>select count(distinct nick) from user_access;+———————-+| count(disti [详细]

通过实例认识MySQL中前缀索引的用法

今天在测试环境中加一个索引时候发现一警告root@test 07:57:52>alter table article drop index ind_article_url; Query OK, 144384 rows affected (16.29 sec) Records: 144384 Duplicates: 0 Warnings: 0 root@test 07:58:40>alter table article add index ind_article_url(url); Query [详细]

Suse Linux 10中MySql安装与配置步骤

安装环境: 操作系统:suse Linux 10 数据库:MySQL 5.0.22 希望能认识更多高手,互相学习讨论技术! 首先发泄一下再这,网上看了N多安装mysql的文章,大多大同小异,都不能很好的安装mysql;多多少少都有问题;以个人之见大多为一份原文,拷贝到各自的博客或一些网上,纯属盗窃啊!上周末开始筹划安装suse以及mysql,一直到今天下午才终于到了show databases;太晕了!现在我将我安装mysql的每一步骤都放在这,以共需者查看,也以防日后自己再次观摩; 注意:在 [详细]

简单分析MySQL中的primary key功能

在5.1.46中优化器在对primary key的选择上做了一点改动: Performance: While looking for the shortest index for a covering index scan, the optimizer did not consider the full row length for a clustered primary key, as in InnoDB. Secondary covering indexes will now be pre [详细]

MySQL索引优化的实际案例分析

Order by desc/asc limit M是我在mysql sql优化中经常遇到的一种场景,其优化原理也非常的简单,就是利用索引的有序性,优化器沿着索引的顺序扫描,在扫描到符合条件的M行数据后,停止扫描;看起来非常的简单,但是我经常看到很多性能较差的sql没有利用这个优化规律,下面将结合一些实际的案例来分析说明: 案例一: 一条sql执行非常的慢,执行时间为:root@test 02:00:44SELECT * FROM test_order_desc WHERE END_TIME>n [详细]

使用sysbench来测试MySQL性能的详细教程

sysbench是一个模块化的、跨平台、多线程基准测试工具,主要用于评估测试各种不同系统参数下的数据库负载情况。 目前sysbench代码托管在launchpad上,项目地址:https://launchpad.net/sysbench(原来的官网 http://sysbench.sourceforge.net 已经不可用),源码采用bazaar管理。 一、 下载源码包 安装epel包后以便安装bzr客户端:rpm -Uvh http://dl.fedoraproject.org/pub/ep [详细]

MySQL在关联复杂情况下所能做出的一些优化

昨天处理了一则复杂关联SQL的优化,这类SQL的优化往往考虑以下四点: 第一.查询所返回的结果集,通常查询返回的结果集很少,是有信心进行优化的; 第二.驱动表的选择至关重要,通过查看执行计划,可以看到优化器选择的驱动表,从执行计划中的rows可以大致反映出问题的所在; 第三.理清各表之间的关联关系,注意关联字段上是否有合适的索引; 第四.使用straight_join关键词来强制表之间的关联顺序,可以方便我们验证某些猜想; SQL: 执行时间:mysql> se [详细]