数据库
gtuu0123
这个作者很懒,什么都没留下…
展开
-
oracle instant client安装
<br />可以在此处下载<br />http://www.oracle.com/technology/global/cn/software/tech/oci/instantclient/index.html<br /> <br />将其解压到c:/OracleInstantClient<br />1.SET PATH=c:/OracleInstantClient<br />2.SET TNS_ADMIN=c:/OracleInstantClient<br />3.新建一个tnsnames.ora,然后填入原创 2010-08-20 23:04:00 · 1022 阅读 · 0 评论 -
Mysql5.1中主要使用的几种表引擎?它们的区别是什么?在使用表引擎时,要注意什么问题?
Myisam:支持B-Tree、R-Tree、全文索引;表级锁;无事务功能;索引和数据分两个文件存放;适于有大量查询的应用Innodb:基于B-Tree的聚簇索引,自动hash索引;行级锁;事务;索引和文件存在一起;适于并发访问密集的应用;Merge:可以合并多个相同结构的myisam表Archive:相比myisam存储小很多;无索引;适于历史数据的保存;不能插入、删除、更新Me原创 2010-05-08 17:31:00 · 1198 阅读 · 0 评论 -
事务是什么?事务的隔离级别是什么?
事务是作为一个逻辑单元执行的一系列操作,一个逻辑工作单元必须有四个属性,称为 ACID(原子性、一致性、隔离性和持久性)属性,只有这样才能成为一个事务隔离级别:Read_uncommit 存在问题:脏读、不可重复读、幻读Read_commit 存在问题:不可重复读、幻读 解决:在某行数据改变后,加写锁Read_repeatable 存在问题:幻读原创 2010-05-08 17:22:00 · 1304 阅读 · 0 评论 -
mysql中的join on和where在性能上有差异吗?
讨论见:http://www.mysqlperformanceblog.com/2010/04/14/is-there-a-performance-difference-between-join-and-where/ 结论:select * from A,B where A.id=B.a_id和select * from A inner join B on A.id=B.a_i原创 2010-04-25 00:15:00 · 5929 阅读 · 0 评论 -
不要使用一些mysql特有的tip来写查询
http://immike.net/blog/2007/04/09/how-not-to-optimize-a-mysql-query/这篇文章建议:(1)不要使用一些mysql的tip,如:SQL_SMALL_RESULT, HIGH/LOW_PRIORITY, and INSERT DELAYED,STRAIGHT_JOIN,除非没有其他方法,因为这样失去了SQL的可移植性(2)适原创 2010-04-24 16:17:00 · 659 阅读 · 0 评论 -
怎样判断mysql-slave被非预期地更新
<a title="http://www.mysqlperformanceblog.com/2010/04/11/how-to-know-if-youre-updating-slave-you-should-not/" href="http://www.mysqlperformanceblog.com/2010/04/11/how-to-know-if-youre-updating-slave原创 2010-04-24 23:44:00 · 1025 阅读 · 0 评论 -
mysql archive存储引擎
http://www.mysqlperformanceblog.com/2006/11/12/trying-archive-storage-engine/ (1)在相同的条件下,archive的数据大小远小于myisam(2)在压缩archive数据时,bzip2好于gzip(3)需要添加archive的方法和压缩的level,以满足不同用户的需求(4)这个存储引擎适用于日志数原创 2010-04-24 16:25:00 · 2044 阅读 · 0 评论 -
对mysql的order by及limit优化要适数据情况而定
以下这篇文章论述上在什么情况下子查询比一般的内连接查询更加快速http://www.mysqlperformanceblog.com/2010/03/18/when-the-subselect-runs-faster/ 以下是我对mysql的order by和limit优化的建议,要适表的数据量和用来过滤列的唯一值的个数而定(1)where子句中用来过滤结果的列所在索引的cadin原创 2010-04-10 18:29:00 · 3369 阅读 · 0 评论 -
myisam和innodb中count(*)的区别
COUNT(*) for Innodb Tableshttp://www.mysqlperformanceblog.com/2006/12/01/count-for-innodb-tables/ 总结:1.myisam保存表的总行数,因此count(*)并且无where子句,很快会返回表的总行数2.myisam保存表的总行数,利用count(column)并且无where子句,并且此c原创 2010-04-11 16:44:00 · 4700 阅读 · 0 评论 -
wait_timeout和interactive_timeout区别
wait_timeout -- 指的是mysql在关闭一个非交互的连接之前所要等待的秒数interactive_time -- 指的是mysql在关闭一个交互的连接之前所要等待的秒数(交互连接如mysql gui tool中的连接) 对性能的影响:wait_timeout:(1)如果设置大小,那么连接关闭的很快,从而使一些持久的连接不起作用(2)如果设置太大,容易造成连接打原创 2010-04-11 16:17:00 · 21654 阅读 · 0 评论 -
计数表的技巧
对于一些引擎,如innodb,由于其不存储表中的行数,因此,select count(*)对于innodb来说,是比较慢的;相比之下,myisam由于其存储表中行数的统计信息,因此select count(*)更加快速详细讨论见:http://blog.csdn.net/gtuu0123/archive/2010/04/11/5473045.aspx 可以采用计数表的方式,将一个inn原创 2010-04-11 16:27:00 · 949 阅读 · 0 评论 -
mysql -- error code [1442]; Can't update table 'table_name' in stored function/trigger because it is already used by statement w
mysql -- error code [1442]; Cant update table table_name in stored function/trigger because it is already used by statement which invoked this stored function/trigger 相关讨论:http://forums.mysql.c原创 2010-04-10 23:43:00 · 10923 阅读 · 0 评论 -
mysql error -- 1415 not allowed to return a result set from a trigger
在mysql的trigger和function中不能出现select * from table形式的查询,因为其会返回一个结果集;而这在mysql的trigger和function中是不可接受的,但是在存储过程中可以。在trigger和function中可以使用select ... into ...形式的查询。 相关讨论:http://forums.mysql.com/read.php?9原创 2010-04-10 23:37:00 · 16682 阅读 · 2 评论 -
当使用limit时,explain可能会造成误导
When EXPLAIN can be misleading原文见:http://www.mysqlperformanceblog.com/2006/11/12/when-explain-can-be-misleading/ (1)explain当估计行数时,不考虑limit,因此可能会对查询估计过多的检查行数(2)类似于SELECT ... FROM TBL LIMIT N这样的全表原创 2010-04-11 11:58:00 · 2338 阅读 · 0 评论 -
Mysql存储过程
一、分隔符由于存储过程中的语句的结束符为;,所以要使用delimiter语句定义在存储过程定义结束所使用的分隔符。如:delimiter //delimiter ; 二、存储过程语法create procedure sp_name(in name type,out name type,inout name type)language sql[not] deterministic原创 2010-01-03 20:27:00 · 1095 阅读 · 0 评论 -
利用mysql函数更新memcached
Memcached Functions for MYSQL官方主页:https://launchpad.net/memcached-udfs 两篇基本文章:http://www.libing.name/2009/02/06/mysql-map-data-to-memcached.htmlhttp://www.libing.name/2008/02/26/mysql-map-memc原创 2010-01-03 19:45:00 · 2302 阅读 · 1 评论 -
存储过程中的单引号
1) 可以用表示字符串中的一个单引号, 如:set @var = + xxxx + 执行 Print 结果为 2)用Char(39)代替,如:Select char(39) + xxxx + char(39)结果为 xxxx原创 2010-01-03 19:41:00 · 2470 阅读 · 0 评论 -
mysql触发器实例
Mysql从5.0开始支持触发器 语法:CREATE TRIGGER { BEFORE | AFTER }{ INSERT | UPDATE | DELETE }ON FOR EACH ROW 注意:在Mysql中现在还不支持利用call来调用存储过程 示例:比如有论坛的版块表和文章表,一个版块中有多篇文章,在版块表中有一个字段用来记录版块下的文章数。表boar原创 2009-12-28 23:16:00 · 1029 阅读 · 0 评论 -
怎样解决mysql的too many connections问题?
可以参考下列文章http://www.mysqlperformanceblog.com/2010/03/23/too-many-connections-no-problem/ 结论如下:(1)mysql默认会给super用户留一个连接,你可以用这个预留的连接来登录,来增加连接数;但是如果连接的用户全是super权限的,则这个预留的连接不存在。这时可以用以下的命令来设置连接数:gdb原创 2010-05-08 22:47:00 · 1709 阅读 · 0 评论 -
mysql的cardinality在myisam和innodb中的不同
详细解释和例子见下列文章:http://www.mysqlperformanceblog.com/2008/09/03/analyze-myisam-vs-innodb/http://www.penglixun.com/work/database/mysql_show_index_cardinality.html (1)cardinality影响mysql optimizer对索引的选原创 2010-05-08 22:36:00 · 1887 阅读 · 0 评论 -
什么是Instead of triggers?
<br />INSTEAD OF triggers是用于视图上的触发器;当对视图进行insert,update,delete时,可以利用INSTEAD OF triggers来实现内部对其他表的操作;一共有三种:INSTEAD OF insert on view,INSTEAD OF update on view,INSTEAD OF delete on view原创 2010-06-06 21:45:00 · 1357 阅读 · 0 评论 -
mysql中的视图
<br />关于mysql视图的文章:<br />A workaround for the performance problems of TEMPTABLE views<br />http://www.mysqlperformanceblog.com/2010/05/19/a-workaround-for-the-performance-problems-of-temptable-views/<br />MySQL VIEW as performance troublemaker<br />http://原创 2010-06-06 21:34:00 · 885 阅读 · 0 评论 -
myisam key compress
<br />具体见:<br />http://www.mysqlperformanceblog.com/2006/05/13/to-pack-or-not-to-pack-myisam-key-compression/<br /> <br />(1)key compress应用在块范围<br />(2)块中的第一个索引值被完全的存储,第二个索引值包括和前一个索引相同的值+和前一个索引不同的值<br />(3)例如:块中的第一个索引为aaaaaa,第二个索引为aaaaab;则key compress算法会记录原创 2010-06-06 19:51:00 · 815 阅读 · 0 评论 -
使用from中的子查询来优化join
<br />CREATE TABLE `fact` ( `i` int(10) UNSIGNED NOT NULL, `val` int(10) UNSIGNED NOT NULL, KEY `i` (`i`,`val`)) CREATE TABLE `dim` ( `id` int(10) UNSIGNED NOT NULL AUTO_INCREMENT, `pad` varchar(100) NOT NULL, PRIMARY KEY (`id`))a)SELECT count(*) FR原创 2010-06-06 20:21:00 · 3427 阅读 · 0 评论 -
SELECT LOCK IN SHARE MODE and FOR UPDATE
<br />参考文章:<br />http://www.mysqlperformanceblog.com/2006/08/06/select-lock-in-share-mode-and-for-update/<br /> <br />(1)SELECT for UPDATE and LOCK IN SHARE MODE运行在READ-COMMITTED隔离等级,即使当前的隔离等级为REPEATABLE-READ,这是因为innodb可以只锁定当前版本的行<br />(2)LOCK IN SHARE MOD原创 2010-06-06 19:15:00 · 4040 阅读 · 0 评论 -
innodb的记录锁、gap锁、next-key锁
相关文章见:http://dev.mysql.com/doc/refman/5.0/en/innodb-record-level-locks.htmlhttp://hi.baidu.com/fishhust/blog/item/c4900b8bff4a2e1bc8fc7a81.html对文章的总结如下:(1)记录锁:在行相应的索引记录上的锁(2)gap锁:是在索引记录间歇上的锁(3)next-key锁:是记录锁和在此索引记录之前的gap上的锁的结合(4)innodb行锁的加锁方式: 当根据innodb表的索原创 2010-06-06 18:49:00 · 7747 阅读 · 0 评论 -
innodb和myisam在join上的比较
<br />具体见这篇文章:<br />http://www.mysqlperformanceblog.com/2006/05/29/join-performance-of-myisam-and-innodb/<br /> <br />(1)innodb在主键上的连接更快,因为对于innodb,数据和索引被聚簇到一个块中,当读取索引时,数据也被读出<br />(2)innodb内部会根据查询情况自动建立适应性hash索引,这个比单一的btree索引更快<br />(3)myisam使用key compres原创 2010-06-06 15:30:00 · 1975 阅读 · 0 评论 -
使用CHAR列进行表连接的效率
具体的可以见这篇文章:http://www.mysqlperformanceblog.com/2007/06/18/using-char-keys-for-joins-how-much-is-the-overhead/得出结论如下:(1)使用INTEGER连接比CHAR更有效率(2)对于myisam,使用CHAR进行连接开启key compress比未开启key compress时效率更高(3)在更短CHAR列上进行连接更快(4)在CHAR列上,Latin1比UTF8连接更快原创 2010-06-06 15:14:00 · 1003 阅读 · 0 评论 -
innodb外键造成的锁定机制
innodb支持外键,但是由于外键,也会对innodb表增加锁定机制假设一个表为parent,一个表为child,parent通过id和child的parent_id相连接;在一个session中set autocommit=0,执行对parent或child的操作,在另一个session执行对child或parent的操作,从而得出以下结论:(1)对父表的操作1)insert to parent,新插入行的id值为XXXchild会锁外键值为XXX的行,不会锁其他行2)update parent,原id为原创 2010-06-06 14:59:00 · 1058 阅读 · 0 评论 -
Query Cache相关配置变量和状态变量
Query Cache相关配置变量| query_alloc_block_size | 8192 |为查询分析和执行过程中创建的对象分配的内存块大小,强调分析和执行过程中| query_cache_limit | 1048576 |不要缓存大于该值的结果| query_cache_min_res_unit | 4096 |查询缓存分配的最小块的大小| query_cache_size | 1677原创 2010-05-16 20:58:00 · 1248 阅读 · 0 评论 -
innodb相关设置变量
| innodb_adaptive_hash_index | ON |是否开启适应性hash索引| innodb_additional_mem_pool_size | 1048576 |InnoDB用来存储数据目录信息&其它内部数据结构的内存池的大小| innodb_autoextend_increment | 8 |当自动扩展表空间被填满之时,为扩展而增加的尺寸(MB为单位)| innodb_a原创 2010-05-15 11:31:00 · 2303 阅读 · 0 评论 -
innodb相关的状态变量
| Innodb_buffer_pool_pages_data | 496 |包含数据的页数(脏或干净)。| Innodb_buffer_pool_pages_dirty | 5 |当前的脏页数| Innodb_buffer_pool_pages_flushed | 1182773 |已经flush的页面数| Innodb_buffer_pool_pages_free | 0 |空页数| Inno原创 2010-05-15 11:24:00 · 5395 阅读 · 0 评论 -
查询mysql数据库的大小
(1)INFORMATION_SCHEMAselect (sum(data_length) + sum(index_length))/(1024*1024) from INFORMATION_SCHEMA.`TABLES` where table_schema = your_table_schema and table_name like your_table_name; (原创 2010-05-16 22:58:00 · 1479 阅读 · 0 评论 -
innodb的磁盘IO(read-ahead和doublewrite技术)(来自于mysql文档)
InnoDB使用模拟异步磁盘I/O:InnoDB创建许多线程来处理I/O操作,比如read-ahead(预读). 在InnoDB中有两个read-ahead试探: (注:Innodb的记录在文件中的顺序是按照主键顺序存储)(1)在连续read-ahead中,如果InnoDB注意到在表空间中对一个片断的访问方式是连续的,它就预先布置一批数据库页的读给I/O系统。(2)在随机re原创 2010-05-16 22:29:00 · 4424 阅读 · 0 评论 -
mysql查询缓存的内存碎片
query_cache_min_res_unit 查询缓存分配的最小块的大小(字节)query_alloc_block_size 为查询分析和执行过程中创建的对象分配的内存块大小Qcache_free_blocks代表内存自由块的多少,反映了内存碎片的情况==========================1)当查询进行的时候,Mysql把查询结果保存在qurey cache中,原创 2010-05-16 21:37:00 · 2828 阅读 · 1 评论 -
Select和Sort状态变量
参考文章:http://hackmysql.com/selectandsort | Select_full_join | 应用到其他表,没有使用索引的联接的数量| Select_full_range_join | 应用到其他表,在引用的表中使用范围搜索的联接的数量 select * from A,B where A.columnx=1 and B.columnx between 1 and原创 2010-05-16 21:11:00 · 1547 阅读 · 0 评论 -
myisam key相关配置变量及状态变量
myisam key相关配置变量| key_buffer_size | 268435456 |MyISAM表的索引块分配了缓冲区,由所有线程共享。key_buffer_size是索引块缓冲区的大小| key_cache_age_threshold | 300 |该值控制将缓冲区从键值缓存热子链(sub-chain)降级到温子链(sub-chain)。如果值更低,则降级更快。| key_cache_原创 2010-05-16 20:53:00 · 958 阅读 · 0 评论 -
org.hibernate.exception.SQLGrammarException
在使用hibernate的时候,有时会出现org.hibernate.exception.SQLGrammarException这样的错误。检查程序也发现不出明显的错误,最后才发现是:表的字段中使用了数据库的关键字,因此:建议在数据库设计时,不要使用数据库的关键字作为字段名。原创 2009-12-27 18:51:00 · 2165 阅读 · 0 评论 -
innodb的索引机制
1)innodb将数据和索引存储在一起 2)innodb索引是基于b-tree的clustered-index,b-tree中的每个结点存储key+row data;innodb中的第二个索引存储,在搜索时,先通过key找到pk,再通过pk搜索b-tree的结点,从中找到row data 3)由于聚集索引和行数据存放一起(在同一个数据页中),所以利用聚集索引访问数据行时,非常的快,同一个数据页在访原创 2010-03-07 23:46:00 · 780 阅读 · 0 评论 -
mysql中触发器和存储过程的if-else中的子句不能为空
以下这样写会报错:[Err] 1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near end if at line 8create procedure test(原创 2010-02-06 11:00:00 · 15074 阅读 · 3 评论