zhoz blog 重新开张,欢迎继续支持!
May
7
公司老服务器,空间不大。下午哥们说SVN提交不了,原因是磁盘空间不足。
我就简单查询了一下:
[root@oyasai /]# du -h --max-depth=1 |sort
6.2G /usr
19G /var
继续查看,定位到了mysql目录:
-rw-rw----. 1 mysql mysql 3844079616 May 7 11:00 ibdata1
-rw-rw---- 1 mysql mysql 371028567 May 2 13:10 slow_query.log
原来是索引文件和(一堆)日志文件引起的。
1、彻底不需要:
关闭mysql主从,关闭binlog
/etc/mysql/my.cnf。把里面的log-bin这一行注释掉。
# binlog_format=mixed
然后重启数据库
2、重启mysql,开启mysql主从,设置expire_logs_days
我就简单查询了一下:
[root@oyasai /]# du -h --max-depth=1 |sort
6.2G /usr
19G /var
继续查看,定位到了mysql目录:
-rw-rw----. 1 mysql mysql 3844079616 May 7 11:00 ibdata1
-rw-rw---- 1 mysql mysql 371028567 May 2 13:10 slow_query.log
原来是索引文件和(一堆)日志文件引起的。
1、彻底不需要:
关闭mysql主从,关闭binlog
/etc/mysql/my.cnf。把里面的log-bin这一行注释掉。
# binlog_format=mixed
然后重启数据库
2、重启mysql,开启mysql主从,设置expire_logs_days
Mar
19
当执行一条时间比较长的Sql文时,会引起DB挂起。
①查询Pg的状态方法:
# ps axwf | grep 'postgres'
20152 ? S 34:54 /usr/local/pgsql/bin/postgres
20154 ? Ss 54:20 \_ postgres: writer process
20155 ? Ss 41:50 \_ postgres: wal writer process
20156 ? Ss 192:31 \_ postgres: autovacuum launcher process
20157 ? Ss 465:52 \_ postgres: stats collector process
8493 ? Ss 0:00 \_ postgres: postgres WildCard ::1(42985) SELECT
8495 pts/3 S+ 0:00 | \_ grep postgres
②table lock waiting, select waiting产生测试方法,postgres select 执行延迟:
select pg_sleep(50),(select id from zhoz_table) as zhoz_id;
③解决方法:
lock部分mode变换
①查询Pg的状态方法:
# ps axwf | grep 'postgres'
20152 ? S 34:54 /usr/local/pgsql/bin/postgres
20154 ? Ss 54:20 \_ postgres: writer process
20155 ? Ss 41:50 \_ postgres: wal writer process
20156 ? Ss 192:31 \_ postgres: autovacuum launcher process
20157 ? Ss 465:52 \_ postgres: stats collector process
8493 ? Ss 0:00 \_ postgres: postgres WildCard ::1(42985) SELECT
8495 pts/3 S+ 0:00 | \_ grep postgres
②table lock waiting, select waiting产生测试方法,postgres select 执行延迟:
select pg_sleep(50),(select id from zhoz_table) as zhoz_id;
③解决方法:
lock部分mode变换
May
17
以前一个表中的字段忘记记录了,想修复数据。可以用一个Sql文的Update来实现。
方法有两种:
update adv_dat set adv_type=adv_mst.adv_type, adv_target=adv_mst.adv_target
from adv_mst where adv_media_total_day_dat.adv_id=adv_mst.id;
另外一种就是用 left join来实现
方法有两种:
update adv_dat set adv_type=adv_mst.adv_type, adv_target=adv_mst.adv_target
from adv_mst where adv_media_total_day_dat.adv_id=adv_mst.id;
另外一种就是用 left join来实现
Feb
6
系统提示语法错误:date not null default CURRENT_DATE
其实,应该是这样
TIMESTAMP not null default now()
Date或DateTime类型是不能使用函数作为默认值的
其实,应该是这样
TIMESTAMP not null default now()
Date或DateTime类型是不能使用函数作为默认值的
May
6
SQL> select userenv('language') from dual;
USERENV('LANGUAGE')
-----------------------------------------------------------
SIMPLIFIED CHINESE_CHINA.WE8ISO8859P1
从NLS_LANG的组成我们可以看出,真正影响数据库字符集的其实是第三部分。
所以两个数据库之间的字符集只要第三部分一样就可以相互导入导出数据,前面影响的只是提示信息是中文还是英文。
USERENV('LANGUAGE')
-----------------------------------------------------------
SIMPLIFIED CHINESE_CHINA.WE8ISO8859P1
从NLS_LANG的组成我们可以看出,真正影响数据库字符集的其实是第三部分。
所以两个数据库之间的字符集只要第三部分一样就可以相互导入导出数据,前面影响的只是提示信息是中文还是英文。