IT技术博客大学习 共学习 共进步

技术文章精选

低噪声、高可扫读;标题、摘要、来源、标签一目了然。

最新文章

采集自各技术站点的近期文章。

IT MySQL/ 2009-10-11 22:39:02 / 浏览 3,080

写了个Mysql的存储过程

从来没有仔细写个Mysql的存储过程,正好花时间研究了一下。 写任何程序最基本的是先要有详细注释,有log记录,有异常异常等等,当然Mysql的异常处理机制很差,搞了半天都没有满意的结果。功能很简单,自动修改merge表的定义,并清理过期表的数据。DELIMITER $$DROP PROCEDURE IF EXISTS sp_rename_mergetable $$create procedure sp_rename_mergetable(in p_tablename varchar(60),in p_begincount int,in p_endcount int)B...

IT MySQL/ 2009-10-11 22:38:50 / 浏览 2,340

mysql中now和sysdate的区别

同一条记录,开发发现主库的创建时间和备库的创建时间不一致,刚开始怀疑是系统时间的问题,想想又不对,mysql的binlog里面会打自己的时间戳,那是什么原因呢? 项灵刚(2009-03-26 13:51:31): http://jianghu.taobao.com/u/MjAzMzA4ODI=/poll/poll_detail-12011.htm 项灵刚(2009-03-26 13:51:40): 三胜的投票记录也有两个时间陶方(14:07:56): insert into poll_record_s (JOIN_RECORD_ID,PRO_USER_ID,POLL_ID,REC_USER_ID,G...

IT MySQL/ 2009-10-11 22:38:32 / 浏览 2,960

Mysql中的导数据脚本

这两天在对线上库进行初始化,需要导大量的数据到线上,使用Mysql的load data很容易实现。1.原始数据[mysql@DEV_SNS1 mysql]$ more 111.txt 2263,65025185,12263,61833350,22263,63713789,32263,28344254,42263,13134504,52580,59707749,12580,43,2....2.表结构如下root@test 10:53:27>desc tmp_dy;+-------+---------+------+-----+---------+-------+| Field | Type | Null | Key | Default | Extra |+-------+--------...

IT MySQL/ 2009-10-11 22:38:09 / 浏览 4,400

用Mysql来搭建可扩展的SNS网站

近几年web2.0的火爆,带动了Mysql的使用热潮,不管是小企业还是大网站,都有意无意的开始使用Mysql来搭建数据平台。传统网站随着业访问量,数据量的急剧膨胀,集中式的数据库也越来越成为瓶颈,很难做进一步的扩展,做读写分离,而这些都是Mysql的优势所在,容易扩展使Mysql渐渐成为了企业新的选择。 说到可扩展性,和app一样,当数据库压力上来时,只要通过不断增加数据库服务器来解决,尽量不去调整应用程序,服务器硬...

IT MySQL/ 2009-10-11 22:37:18 / 浏览 3,960

Mysql中大批量删除数据

对于大批量过期的数据,Mysql中应该如何清理呢?项目环境:1.分表,可能会分成256张表,512张表等2.每个子表每天过期(超过3个月数据就算过期)的数据可能会超过100万,如何清理?暂时只想到批量循环删除,一直到返回结果为0,DELETE FROM table WHERE gmt_create>trunc(sysdate-90) LIMIT 10000,同时还要考虑时间索引右倾的情况,大家都应该知道,mysql重建索引是很麻烦的,要锁表。 欢迎提供不影响业务的情况下,更有效删除M...

IT MySQL/ 2009-10-11 22:36:39 / 浏览 4,320

Mysql .frm损坏后如何恢复

.frm文件用来保持表和列的定义,表的索引和数据可能被存储在一个或多个文件里,这取决于表的类型。因为.frm里面只是保留表的定义,万一损坏的话恢复起来很简单的,只要在另外的库中重建个一模一样的表,然后copy .frm文件过来就可以了。 这篇文章不错:http://www.mysqlperformanceblog.com/2008/12/17/recovering-create-table-statement-from-frm-file/

IT MySQL/ 2009-10-11 22:36:09 / 浏览 2,960

Mysql中的存储过程

Mysql 5.0 推出来的一个功能,在我看来和oracle差不多的,语法上稍微有一点点不同,下面写了一个例子模板,大家用到时可以很容易套用。 mysql> delimiter // --语句结束符更改为// --定义存储过程mysql>create procedure ptest(out return_val int)begindeclare a1 ,b1 int default 5; --定义变量declare cur1 cursor for select a from test; --定义游标declare exit handler for not found begin insert into test_error(m...

IT MySQL/ 2009-10-11 22:35:55 / 浏览 3,600

Mysql中的alter table操作原理

alter table运行时会对原表进行临时复制,在副本上进行更改,然后删除原表,再对新表进行重命名。在执行alter table时,其它用户可以阅读原表,但是对表的更新和修改的操作将被延迟,直到新表生成为止。新表生成后,这些更新和修改信息会自动转移到新表上。注意,如果您在执行alter table时使用除了rename以外的选项,则MySQL会创建一个临时表。即使数据并不需要进行复制(例如当您更改列的名称时),MySQL也会这么操作。对于Myisa...

IT MySQL/ 2009-10-11 22:35:22 / 浏览 2,580

Mysql中rand()的实现方式

mysql> use test;Database changedmysql> select count(*) from test;+----------+| count(*) |+----------+| 2097152 |+----------+1 row in set (0.00 sec)mysql> select * from test ORDER BY RAND() LIMIT 1;+--------+------+| a | b |+--------+------+| 765909 | |+--------+------+1 row in set (8.78 sec) --用了将近9s 引Mysql文档:You cannot use a column with RAND() values in an ORDER BY ...

IT MySQL/ 2009-10-11 22:35:06 / 浏览 5,520

Mysql中的排序优化

排序也就是我们说的order by,Mysql更强调的是把排序字段也放在索引中,不需要回表,这是理想的实现方式,如果通过索引没有办法获得有序的数据,MySQL通过将取得的数据在内存中进行排序然后再将数据返回给客户端,有两种排序算法:一种是首先根据相应的条件取出相应的排序字段和定位行数据的行指针信息,然后在 sort buffer 中进行排序,最后根据排序结果回表取出需要的字段返回给客户端。另一种排序是在排序时就直接取出需...

IT 算法/ 2009-10-11 22:34:47 / 浏览 4,740

Mysql中的分页写法

基本上分页都是通过两个sql来实现的,一个查询count(*),一个查询list,如下:mysql> select count(*) from test;+----------+| count(*) |+----------+| 2097152 |+----------+1 row in set (0.00 sec)mysql> select * from test limit 10; +--------+------+| a | b |+--------+------+| 62599 | || 158694 | || 155279 | || 233810 | || 160137 | || 221035 | ...

IT MySQL/ 2009-10-11 22:34:28 / 浏览 3,220

Mysql执行计划中的Using filesort

MySQL需要额外的一次传递,以找出如何按排序顺序检索行,通过根据联接类型浏览所有行并为所有匹配WHERE子句的行保存排序关键字和行的指针来完成排序,然后关键字被排序,并按排序顺序检索行(引文档)。 额外的传递是指什么,反正每回不管看英文还是中文myql文档都是晕乎乎的。mysql> show create table test_filesort\\G;*************************** 1. row *************************** Table: test_filesortCre...

IT MySQL/ 2009-10-11 22:34:07 / 浏览 1,840

Mysql时间函数

--返回当前时间mysql> select curdate(),curtime(),now(),DATE(now()),sysdate();+------------+-----------+---------------------+-------------+---------------------+| curdate() | curtime() | now() | DATE(now()) | sysdate() |+------------+-----------+---------------------+-------------+---------------------+| 2008-12-02 | 10:11:36 | 2008-12-02 10:11:36 | 2008-12-02 | 2008-1...

IT Oracle/ 2009-10-11 22:33:44 / 浏览 3,260

说oracle优化之一

今年所做的优化,大的涉及到体系架构改造,涉及到利用cache,涉及到更改实现方式,小的如加hint,建索引更改sql语句等,一年下来,大大小小算下来也超过100个了。我稍微总结一下优化要具备什么,怎么来做? 为什么要优化? 举个简单的例子,某个sql每小时执行了300万次,逻辑读如果我们能从500下降到100,每小时就可以节省了上亿个逻辑读,优化可以让服务器更节约资源,优化可以让sql执行速度更快,提高用户体验。1.理论...

IT MySQL/ 2009-10-11 22:33:18 / 浏览 3,920

Mysql如何使用内存

每个session使用的内存:Each thread that is used to manage client connections uses some thread-specific space. The following list indicates these and which variables control their size: A stack (default 192KB, variable thread_stack) A connection buffer (variable net_buffer_length) A result buffer (variable net_buffer_length) The connection buffer and result buffer both begin with a size ...

IT MySQL/ 2009-10-11 22:32:51 / 浏览 3,600

Mysql中如何批量生成脚本

[root@sql21 ~]# mysql -u rootWelcome to the MySQL monitor. Commands end with ; or \\g.Your MySQL connection id is 3 to server version: 5.1.26-rc-logType \'help;\' or \'\\h\' for help. Type \'\\c\' to clear the buffer.mysql> show databases;+--------------------+| Database |+--------------------+| information_schema || mysql || test |+--------------------+3 r...

IT Oracle/ 2009-10-11 22:32:05 / 浏览 4,040

Shared pool和library cache latch

Shared pool latch用来保护共享池内部结构,在分配和释放共享池时需要获得latch,在老化或释放空间时也需要 latch。Oracle9i之前,共享池内存结构是由单独的Shared pool latch保护,从9i开始,如果服务器有4个以上的cpu且shared_pool_size大于250M,Oracle会动态将共享池分为多个子池,最多可以达到7个sub pool。子池的数量也可以通过_kghdsidx_count参数来手动调整,每个子池有自己的结构,lru列表和shared pool latch。查看Shared...

IT Oracle/ 2009-10-11 22:31:21 / 浏览 6,660

如何建立合适的索引?

当你接手一个系统时,通常是从检查系统负载,cpu、内存使用率开始,查看statspack top5等待事件,逻辑读、物理读排名靠前的sql语句等等,然后进行初步的优化。而随着业务的深入了解,你开始从系统的角度去考虑据库设计,考虑应用实现的合理性,是否有更好的改进方案等。假设通过statspack报表找到了很耗资源的sql,表分析过,执行计划也是走索引,这种情况下怎么去判断 sql是优化的呢?1.提取逻辑读排名靠前的sql 6,813,699 ...

IT 奋斗/ 2009-10-11 22:30:14 / 浏览 4,360

我这几年

我读书那些年,大学生是多么渴望能进入联想,方正,清华同方,用友这些所谓的大公司,这些公司在学校名气很大,你想想,独栋的办公楼,楼顶挂着大大的方正大厦四个大字,中关村满地的方正科技的广告,你会觉得相当洋气,相当的自豪。 我很幸运,刚毕业有机会加入方正春元,能进入方正并不表示我有多大的能力,学习有多好,这完全是个巧合,方正春元当时急着招人,没面试两句就让我上班了。大公司的确有大公司的好处,公司会...

IT Oracle/ 2009-10-11 22:29:05 / 浏览 3,460

如何使用dbms_stats分析统计信息?

Dbms_stats是oracle8i新增的程序包,它使统计数据的生成和处理更加方便,很多人都在推荐使用dbms_stats替代analyze,我倒是不怎么用过,记录一下 estimate_percent --估算抽样百分比 method_opt:for table --只统计表 for all indexed columns --只统计有索引的表列 for all indexes --只分析统计相关索引 --创建统计信息历史保留表 sql> exec dbms_stats.create_stat_table(ownname => \'scott\',stattab => \'stat_tab...