数据库分库分表方案

在最初,应用的数据量比较少,没有任何压力,一般会将所有的数据放在一个库中。但是随着业务的增长,数据量急剧增长,DB压力增大,似乎随时都会挂掉。

此时,优化DB的使用已经是势在必行,有几个方案:
<1> 优化对DB的使用,读写分离(肯定一开始就做了……)、索引、使用合理的sql等等。一些简单的优化可以先做,复杂的优化如果时间允许能先做是最好的,但如果是一直被业务赶着走,抽不出时间做,只好先选择其它的措施;
<2> 升级机器配置,加CPU、加内存,换SSD。简单[......]

Read more

Posted in 数据库 | Leave a comment

MYSQL启用日志,查看日志,利用mysqlbinlog工具恢复MySQL数据库(转)

原文出自cnblog:http://www.cnblogs.com/xionghui/archive/2012/03/11/2389792.html

 

MYSQL启用日志

[root@jianshe99]# whereis my.ini
[root@jianshe99]# vi /etc/my.cnf
[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
user=mysql
# Def[......]

Read more

Posted in 数据库 | Leave a comment

一条SQL引发的血案

最近在对原来的系统功能进行一些页面的优化,其中一个功能需要对原先的业务逻辑进行较大的改动,因此我一开始就对其抱有谨慎的态度,本来想将其独立出来发布,以免出现问题导致一起提交的其它功能都无法发布,但是最后还是没有这么做。当时想,虽然改动较大,但只要仔细做好自测,应该不会有太大的问题。

 

开发环境测试,没问题!发到beta环境测试,还是没问题!最后上IDC,问题来了,打开页面非常慢,几乎是假死状态,纳闷中=。=!想到过可能会出现问题,但没想到会是速度慢,因为速度慢十之八九是因[......]

Read more

Posted in 数据库 | Tagged , | Leave a comment

SQL:in与exists,select 1

1. in与exists语句

in是把外表和内表作hash连接,而exists是外表做loop循环,每次loop循环再对内表进行查询。如果查询的两个表大小相当,那么用in和exists差别不大。但如果两个表一个较小一个较大,则子查询中的表大时用exists,而子查询中表小时用in。

 

例如:表A(小表),表B(大表)

1:select * from A where cc in (select cc from B) 效率低,用到了A表上cc列的索引;

se[......]

Read more

Posted in 数据库 | Tagged | Leave a comment

MySQL常用DDL命令

1. 字段操纵

a. 添加新字段

alter table [table_name] add [column_name] [type] ,这里“[]”只是表示里面的内容为根据实际情况填写的,table_name为表名;column_name为列名;type为列的类型,如char,varchar,int等等

b. 删除字段

alter table [table_name] drop [column_name];

c. 改变字段类型

alter table [tab[......]

Read more

Posted in 数据库 | Tagged | Leave a comment