上周问答集萃(12月6日-12月12日)

由于目前问答平台问题较多,问答集萃改为每周更新,并同时公布【采纳榜单】及【优秀提问者名单】。
我们定期从墨天轮问答平台上用户遇到的数据库问题中整理出一些常见问题和诊断总结,供大家参考学习,详细的诊断分析过程可以通过点击标题链接查看。
解答: 取决磁盘容量大小和mysql参数设置;
show variables like ‘%expire_logs_days%’;
默认是0,即永不过期
可以通过设置参数全局参数或者启动参数进行修改:
set global expire_logs_days=30;
配置文件添加;
expire_logs_days = 30(iPhone Mini)
2、Oracle:有个存储过程执行很慢,能想到的就是把存储过程里面涉及到的sql分段分析,有其他好的方法吗?
解答: 第一步你得找出你的存储过程慢在哪里,可能你一个存储过程有1000行,其中就一条SQL执行慢,耗时80%,你得把这条sql找出来,Oracle有个dbms_profiler包,服务器端可能需要配置一下,然后在PL/SQL里点右键打开这个存储过程,选择菜单test,右边有个工具栏"Create profiler report",点了它在跑一次,你的耗时分布看的清清楚楚,每行代码执行多少次,占用多重时间,找出瓶颈了再对进一步分析(刘晓华)
3、Oracle 中 list类型的分区可以改为自增长的吗 ?
解答: 你说的自增长应该是间隔分区。但间隔分区并不能直接支持list类型,你可以考虑通过表中的时间字段与你目前的list字段来联合创建一个间隔分区:(cqiwen)
//创建间隔哈希分区
partition by range(joindate)
interval (numtoyminterval(24,'month') )
subpartition by hash(cardid) subpartitions 4
(
partition p_before_2014 values less than (to_date('2014-01-01','YYYY-MM-DD')),
partition p_001 values less than (to_date('2016-02-01','YYYY-MM-DD')),
partition p_002 values less than (to_date('2018-03-01','YYYY-MM-DD'))
);
解答: 1、数据库的大小版本需要一致; 若不一致,备库倒是能够顺利同步主库的归档日志,备库只能处于MOUNT状态,而不能被OPEN;
2、操作系统的版本号大小,可以有差异;(惭愧小七)
解答: 内存放不下会用到临时空间。临时空间排序较慢。
临时空间大了,不会自动回收。(薛晓刚)
解答: set transaction_isolation=’ REPEATABLE-READ ';
set transaction_isolation=‘Read-Committed’;
不同的隔离级别。
效果不一样。
rr模式下,没有索引就是表锁。(薛晓刚)
7、postgresql有没有办法在存过里输出变更了多少行?
解答: 参考官方文档GET DIAGNOSTICS的使用,下面是一个参考例子:(彭冲)
create or replace function public.test()
returns void
as $$
declare
/**
* create table public.t(id int);
**/
v_insert_count int;
v_update_count int;
begin
insert into public.t values(100),(101),(102);
GET DIAGNOSTICS v_insert_count = ROW_COUNT;
raise notice 'v_insert_count=%',v_insert_count;
update public.t set id=id+1 where id>101;
GET DIAGNOSTICS v_update_count = ROW_COUNT;
raise notice 'v_update_count=%',v_update_count;
end;
$$ language plpgsql;
解答: text算大字段
DM支持以下类型:
字符型:char、varchar
数值类型:numberic、decimal、float、double等
日期/时间类型:date、time、datetime
大文本/多媒体类型:text、blob、clob、image等(刘宇)
9、SQL Server 2016 中的 SP2 和 CU 有什么区别?如果安装 SQL Server 2016 应该打哪个补丁,实现安装了最新的补丁?
解答:SP是最大的补丁集,相当于包含CU;CU算是小的,每8个星期发布一次;
当然SP整合之后也会发CU,也会再整合成SP;
其实目前2016最新的补丁包是SP3(范伟林)
10、BLOCK X有多条记录,要查询其中某一条,该条ROWID为ABC,查完后,是ROWID为ABC的记录存到BUFFER CACHE了,还是整个BLOCK X所有记录都存到BUFFER了?
解答: 缓存的是block,如若不然,访问该block的其他数据时,还要重新去数据文件读这个块,那就‘灾难’了。(冯睿)
墨力问答计划正在如火如荼进行中!
成为优秀提问者指南:https://www.modb.pro/db/105726
墨力问答计划:https://www.modb.pro/db/100800
本期“墨力问答计划”最佳提问者名单

| 序号 | 1 | 2 | 3 | 4 | 5 |
|---|---|---|---|---|---|
| 用户昵称 | 张玉龙 | 沈西含 | olabll1 | Thomas | 荣志强 |
本期“墨力问答计划”采纳榜单





