Welcome 微信登录

首页 / 数据库 / MySQL

mysql的3种分表方案

mysql的3种分表方案

一、先说一下为什么要分表:当一张的数据达到几百万时,你查询一次所花的时间会变多,如果有联合查询的话,有可能会死在那儿了。分表的目的就在于此,减小数据库的负担,缩短查询时间。根据个人经验,mysql执行一个sql的过程如下:1、接收到sql;2、把sql放到排队队列中;3、执行sql;4、返回执行结果。在这个执行过程中最花时间在什么地方呢?第一,是排队等待的时间,第二,sql的执行时间。其实这二个是一回事,等待的同时,肯定有sql在执行。所以我们要缩短sql...
mysql数据校验过程中的字符集问题处理

mysql数据校验过程中的字符集问题处理

场景:主库DB:utf8字符集备库DB:gbk字符集需求:校验主备数据是否一致,并且修复校验过程:设置主库连接为utf8,设置备库连接为gbk,分别进行查询,将返回的的结果集按记录逐字段比较。显示结果:原本相同的汉字字符,数据校验认为不一致。原因分析:对于主库而已,由于建立连接的字符集为UTF8,则返回的汉字字符编码为UTF8格式;对于备库而言则是GBK格式,而程序中通过字符串比较函数strcasecmp进行比较,显然不同的字符集编码,相同的字符有不同的二...
修改MySQL数据库中表和表中字段的编码方式的方法

修改MySQL数据库中表和表中字段的编码方式的方法

今天向MySQL数据库中的一张表添加含有中文的数据,可是老是出异常,检查程序并没有发现错误,无奈呀,后来重新检查这张表发现表的编码方式为latin1并且原想可以插入中文的字段的编码方式也是latin1,然后再次仔细观察控制台输出的异常,进一步确定是表和表中字段编码不当造成的,那就修改表和其中对应的字段呗,网上找了一会儿,你别说还真有,执行完sql脚本后果然可以存入中文了,尽管如此还是认为有必要总结一下,古人云:好记性不如烂笔头嘛,呵呵呵。 修改表的编码方式...
MySQL中SELECT+UPDATE处理并发更新问题解决方案分享

MySQL中SELECT+UPDATE处理并发更新问题解决方案分享

问题背景: 假设MySQL数据库有一张会员表vip_member(InnoDB表),结构如下:当一个会员想续买会员(只能续买1个月、3个月或6个月)时,必须满足以下业务要求: •如果end_at早于当前时间,则设置start_at为当前时间,end_at为当前时间加上续买的月数•如果end_at等于或晚于当前时间,则设置end_at=end_at+续买的月数•续买后active_status必须为1(即被激活)问题分析:...
逐步分析MySQL从库com_insert无变化的原因

逐步分析MySQL从库com_insert无变化的原因

大家都知道com_insert等com_xxx参数可以用来监控数据库实例的访问量,也就是我们常说的QPS。并且基于MySQL的复制原理,所有主库执行的操作都会在从库重放一遍保证数据一致,那么主库的com_insert和从库的com_insert理论上应该是相等的。如下面显示,第二列代表主库,第三列代表从库:复制代码 代码如下:com_select 22 1138com_update 36 37com_insert 133 135com_delete 0 0...
教您修复mysql数据库的方法

教您修复mysql数据库的方法

会mysql的朋友都知道mysql在长时间使用过后数据库会出现一些问题,这就需要快速修复损坏mysql数据库以方便我们的工作和学习。下面小编为大家下面介绍两种快速检修 MySQL 数据库的方法。 本人常用这样的代码,直接放到mysql数据库目录里面复制代码 代码如下:cmd /k myisamchk -r jb51_tablenamejb51_tablename是jb51_tablename.MYD的名称。运行以下就可以了。有的时候因为掉电或者其他原因导致...
教你自动恢复MySQL数据库的日志文件(binlog)

教你自动恢复MySQL数据库的日志文件(binlog)

如果MySQL服务器启用了二进制日志,你可以使用mysqlbinlog工具来恢复从指定的时间点开始 (例如,从你最后一次备份)直到现在或另一个指定的时间点的数据。“mysqlbinlog:用于处理二进制日志文件的实用工具”。 要想从二进制日志恢复数据,你需要知道当前二进制日志文件的路径和文件名。一般可以从选项文件(即my.cnf or my.ini,取决于你的系统)中找到路径。如果未包含在选项文件中,当服务器启动时,可以在命令行中以选项的形式给出。启用二进...
mysql锁定单个表的方法

mysql锁定单个表的方法

mysql锁定单个表的方法 复制代码 代码如下:mysql>lock table userstat read; mysql>unlock tables; 页级的典型代表引擎为BDB。 表级的典型代表引擎为MyISAM,MEMORY以及很久以前的ISAM。 行级的典型代表引擎为INNODB。 -我们实际应用中用的最多的就是行锁。 行级锁的优点如下: 1)、当很多连接分别进行不同的查询时减小LOCK状态。 2)、如果出现异常,可以减少数据的丢失。因...
MySQL优化之如何了解SQL的执行频率

MySQL优化之如何了解SQL的执行频率

show [session|global] status 可以根据需要加上参数“ session ”或者“ global ”来显示 session 级(当前连接)的统计结果和 global 级(自数据库上次启动至今)的统计结果。如果不写,默认使用参数是“ session ”。 Com_xxx 表示每个 xxx 语句执行的次数,我们通常比较关心的是以下几个统计参数 : •Com_select :执行 select 操作的次数,一次查询只累加 1...
MySQL优化之如何查找SQL效率低的原因

MySQL优化之如何查找SQL效率低的原因

查询到效率低的 SQL 语句 后,可以通过 EXPLAIN 或者 DESC 命令获取 MySQL 如何执行 SELECT 语句的信息,包括在 SELECT 语句执行过程中表如何连接和连接的顺序,比如我们想计算 2006 年所有公司的销售额,需要关联 sales 表和 company 表,并且对 profit 字段做求和( sum )操作,相应 SQL 的执行计划如下: mysql> explain select sum(profit) from sa...
mysql中max_allowed_packet参数的配置方法(避免大数据写入或者更新失败)

mysql中max_allowed_packet参数的配置方法(避免大数据写入或者更新失败)

MySQL根据配置文件会限制Server接受的数据包大小。有时候大的插入和更新会受 max_allowed_packet 参数限制,导致写入或者更新失败。查看目前配置:复制代码 代码如下:show VARIABLES like "%max_allowed_packet%";显示的结果为:复制代码 代码如下:+--------------------+---------+| Variable_name | Value |+------------------...
MySQL禁用InnoDB引擎的方法

MySQL禁用InnoDB引擎的方法

一、确定版本查看MySQL版本复制代码 代码如下:mysql -V或者可以登录MySQL使用select version();或status;命令查看二、开始工作关闭MySQL复制代码 代码如下:service mysql stop如果上面的命令无法关闭MySQL,则使用kill -9命令强制杀掉进程;修改MySQL配置文件my.cnf(通常位于/etc/mysql/my.cnf)下加入如下字段对于MySQL 5.5而言:复制代码 代码如下:default...
在数据库里将毫秒转换成date格式的方法

在数据库里将毫秒转换成date格式的方法

在开发过程中,我们经常会将日期时间的毫秒数存放到数据库,但是它对应的时间看起来就十分不方便,我们可以使用一些函数将毫秒转换成date格式。 一、 在MySQL中,有内置的函数from_unixtime()来做相应的转换,使用如下: 复制代码 代码如下: mysql> select from_unixtime(1, "%Y-%m-%d %H:%i:%S"); +---------------------------------------+ | fro...
Mac os 解决无法使用localhost连接mysql问题

Mac os 解决无法使用localhost连接mysql问题

今天在mac上搭建好了php的环境,把先前在window、linux下运行良好的程序放在mac上,居然出现访问不了数据库,数据库连接的host用的是localhost,可以确认数据库配置是正确的,因为在java中使用localhost访问正常,另外通过命令行工具也能正常访问。当把localhost换成127.0.0.1或者本机的IP时,居然正常了。以前一直认为localhost与127.0.0.1是一回事,现在事实证明它们其中还是有区别的。在网上搜索了一下...
php mysql localhost,127.0.0.1和ip区别

php mysql localhost,127.0.0.1和ip区别

一家之言:localhost与127.0.0.1的区别localhost与127.0.0.1的区别是什么?相信有人会说是本地ip,曾有人说,用127.0.0.1比localhost好,可以减少一次解析。看来这个入门问题还有人不清楚,其实这两者是有区别的。no1:localhost也叫local ,正确的解释是:本地服务器127.0.0.1在windows等系统的正确解释是:本机地址(本机服务器)no2:localhot(local)是不经网卡传输!这点很重...
浅析Mysql Join语法以及性能优化

浅析Mysql Join语法以及性能优化

一.Join语法概述join 用于多表中字段之间的联系,语法如下:复制代码 代码如下:... FROM table1 INNER|LEFT|RIGHT JOIN table2 ON conditionatable1:左表;table2:右表。JOIN 按照功能大致分为如下三类:INNER JOIN(内连接,或等值连接):取得两个表中存在连接匹配关系的记录。LEFT JOIN(左连接):取得左表(table1)完全记录,即是右表(table2)并无对应匹配记...
<< 1761 1762 1763 1764 1765 1766 1767 1768 1769 1770 >>