您现在的位置:首页
--> Incessant: Blog
最近接到了大量的需求,需要每天定时的从oracle导到Mysql生产服务器上,数据量还比较大,大概在5亿,90G左右,数据量太大了,需要进行分表,小表跑的快,失败的几率也小一些。1.分表,单个表数据量控制在5G(个人随意指定)2.找一台中转服务器,需要安装oracle和mysql的客户端,这台服务器需要从源oracle数据库上导出数据,然后导到目标mysql服务器中3.通过sqluldr从源oracle把数据导出来,导成txt文件 mytest:/bak1/tmp_dy>$...
作用:缓存sql结果集。在SGA中缓存sql语句的执行结果,相同sql再次执行时,直接从SGA直接读结果就可以了,不需要在去数据库中扫描索引,或是回表,计算之类的,若sql中对应的对象(比如表)做了update,insert,delete或是ddl操作,相关所有sql的缓存结果集就自动失效了。ORACLE建议应用仅仅对read only的表中使用result cache缓存功能。result cache缓存包括服务器端result cache缓存和客户端result cache缓存客户端缓存的好处在...
• 设计一定要有眼界
孟霆(2009-04-24 17:32:08): 字符转换成时间,where 条件中进行比较:如select concat(year,\'-\',month,\'-\',date) times where times>subdate(now(),interval 30 day) /注:year,month,date 为表中的字段,分别代表年,月,日丁原(2009-04-24 17:41:39): 你这个要搞什么孟霆(2009-04-24 17:42:43): 数据库中 有number 的 year ,number的month,number的date,三个字段,我想查3天前的怎么搞 设计上一定要有眼界,数据库中...
年纪大了,很多东西容易忘记,就当做流水记录下来吧。1.Mysql中,对于视图view,稍微复杂一点点的语法,比如视图定义中存在union,mysql的select查询就不走索引,走全表扫描。2.Innodb存储引擎:索引存储为键数据+PRIMARY KEY,比如id是主键,建status索引的话,索引数据存储为status+id,这样的话select查询时如果排序的话,尽量根据id来排序。3.Mysql sql_mode分为严格模式和非严格模式,非严格模式(即不启用STRICT_TRANS_TABLE...
1.字段尽量设置为not null2.减少数据转化3.优化count4.优化子查询,用join来代替子查询5.用union all来代替union 这些技巧微不足道,也正是大家容易忽略的。 链接如下:http://www.databasejournal.com/features/mysql/article.php/3813821/Five-Query-Optimizations-in-MySQL.htm
sync_binlog=1 or N This makes MySQL synchronize the binary log’s contents to disk each time it commits a transaction 默认情况下,并不是每次写入时都将binlog与硬盘同步。因此如果操作系统或机器(不仅仅是MySQL服务器)崩溃,有可能binlog中最后的语句丢失了。要想防止这种情况,你可以使用sync_binlog全局变量(1是最安全的值,但也是最慢的),使binlog在每N次binlog写入后与硬盘同步。即使sync_binlog设置...
开发库和线上表结构有很多不一样,分表个数也不同,我需要重新整理保持开发库和线上一致,之前已经告知开发数据是否允许丢失,开发说数据可以不要了,直接丢掉,等我搞好之后开发告诉我部分数据(ring)是不能删除的,我晕,只好想办法来恢复数据了,没有备份,不过还好有全部的binlog。1.根据binlog解析出所有ring数据库的所有sql[mysql@DEV_SNS1 log]$mysqlbinlog --no-defaults --database=ring --start-datetime="20...
从来没有仔细写个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...
同一条记录,开发发现主库的创建时间和备库的创建时间不一致,刚开始怀疑是系统时间的问题,想想又不对,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...
这两天在对线上库进行初始化,需要导大量的数据到线上,使用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 |+-------+--------...
近几年web2.0的火爆,带动了Mysql的使用热潮,不管是小企业还是大网站,都有意无意的开始使用Mysql来搭建数据平台。传统网站随着业访问量,数据量的急剧膨胀,集中式的数据库也越来越成为瓶颈,很难做进一步的扩展,做读写分离,而这些都是Mysql的优势所在,容易扩展使Mysql渐渐成为了企业新的选择。 说到可扩展性,和app一样,当数据库压力上来时,只要通过不断增加数据库服务器来解决,尽量不去调整应用程序,服务器硬...
对于大批量过期的数据,Mysql中应该如何清理呢?项目环境:1.分表,可能会分成256张表,512张表等2.每个子表每天过期(超过3个月数据就算过期)的数据可能会超过100万,如何清理?暂时只想到批量循环删除,一直到返回结果为0,DELETE FROM table WHERE gmt_create>trunc(sysdate-90) LIMIT 10000,同时还要考虑时间索引右倾的情况,大家都应该知道,mysql重建索引是很麻烦的,要锁表。 欢迎提供不影响业务的情况下,更有效删除M...
.frm文件用来保持表和列的定义,表的索引和数据可能被存储在一个或多个文件里,这取决于表的类型。因为.frm里面只是保留表的定义,万一损坏的话恢复起来很简单的,只要在另外的库中重建个一模一样的表,然后copy .frm文件过来就可以了。 这篇文章不错:http://www.mysqlperformanceblog.com/2008/12/17/recovering-create-table-statement-from-frm-file/
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...
alter table运行时会对原表进行临时复制,在副本上进行更改,然后删除原表,再对新表进行重命名。在执行alter table时,其它用户可以阅读原表,但是对表的更新和修改的操作将被延迟,直到新表生成为止。新表生成后,这些更新和修改信息会自动转移到新表上。注意,如果您在执行alter table时使用除了rename以外的选项,则MySQL会创建一个临时表。即使数据并不需要进行复制(例如当您更改列的名称时),MySQL也会这么操作。对于Myisa...
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 ...
排序也就是我们说的order by,Mysql更强调的是把排序字段也放在索引中,不需要回表,这是理想的实现方式,如果通过索引没有办法获得有序的数据,MySQL通过将取得的数据在内存中进行排序然后再将数据返回给客户端,有两种排序算法:一种是首先根据相应的条件取出相应的排序字段和定位行数据的行指针信息,然后在 sort buffer 中进行排序,最后根据排序结果回表取出需要的字段返回给客户端。另一种排序是在排序时就直接取出需...
基本上分页都是通过两个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 | ...
MySQL需要额外的一次传递,以找出如何按排序顺序检索行,通过根据联接类型浏览所有行并为所有匹配WHERE子句的行保存排序关键字和行的指针来完成排序,然后关键字被排序,并按排序顺序检索行(引文档)。 额外的传递是指什么,反正每回不管看英文还是中文myql文档都是晕乎乎的。mysql> show create table test_filesort\\G;*************************** 1. row *************************** Table: test_filesortCre...
--返回当前时间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...
[ 共33篇文章 ][ 第1页/共2页 ][ 1 ][ 2 ]
近3天十大热文
- [55] Oracle MTS模式下 进程地址与会话信
- [54] IOS安全–浅谈关于IOS加固的几种方法
- [53] 如何拿下简短的域名
- [52] Go Reflect 性能
- [51] android 开发入门
- [51] 图书馆的世界纪录
- [49] 读书笔记-壹百度:百度十年千倍的29条法则
- [47] 【社会化设计】自我(self)部分――欢迎区
- [40] 程序员技术练级攻略
- [31] 视觉调整-设计师 vs. 逻辑
赞助商广告