• 登录
  • Subscribe RSS Feed
 

'MySQL' Tag

  • 【MySQL】数据目录权限问题导致服务重启

    02月 4, 2012

    今天一同事在进入mysql实例中某个数据库的时候,碰到ERROR 1018 (HY000): Can't read dir of './xx/' (errno: 13)错误,导致不能对该库进行相关操作(如:show tables时候也报同样的错),通过perror查看具体错误原因: $perror 13 OS error code 13: Permission denied 发现是权限问题,数据目录及其文件的用户和属组都是root,修改正确的权限后,可以show tables操作,但是进行count(*)表的时候,mysql实例重启了。 后面测试了一下: (1)mysql实例启动的时候,修改数据目录权限,然后访问报ERROR,还原权限后,都正常。 (2)mysql实例启动之前,修改数据目录权限,启动后,然后访问报ERROR,还原权限后,对表进行操作,mysql实例异常重启。

  • 【MySQL】Query Cache的使用问题

    02月 2, 2012

    在mysql version : 5.1.48-log的测试的时候,原来打算使用query cache,结果一直使用不了,后面测试发现是参数的配置不合理导致的。 原参数配置如下: root@test 01:47:31>show variables like '%query_cache%'; +------------------------------+----------+ | Variable_name | Value | +------------------------------+----------+ | have_query_cache | YES | | query_cache_limit | 1024 | | query_cache_min_res_unit | 1024 | | query_cache_size | 31457280 | | query_cache_type | DEMAND | | query_cache_wlock_invalidate | OFF | +------------------------------+----------+ 6 rows in set (0.00 sec) [...]

  • 【Linux】oprofile安装使用笔记

    01月 14, 2012

    一、oprofile的相关链接:oprofile的 manual | 下载 。 二、oprofile的安装使用 2.1 安装 wget http://prdownloads.sourceforge.net/oprofile/oprofile-0.9.7.tar.gz tar -zxvf oprofile-0.9.7.tar.gz cd oprofile-0.9.7 sudo yum install binutils-devel  --说明:configure报错时候需要装一下这个包 (参考这个网址) ./configure make sudo make install

  • 【MySQL】Innodb行记录格式

    07月 24, 2011

    一、compact和redundant行记录模式 MySQL 5.1中Innodb存储引擎(Built-in-InnoDB)提供了compact和redundant两种格式来记录行数据,redundant是为了兼容之前版本保留的。默认情况下保存的格式为compact格式。可以通过命令show table staus like 'table_name'查看当前表使用的行格式(对应查询结果中的Row_format值)。 对于compact行记录模式:不管char还是varchar类型,NULL值都不占用存储空间。 对于redundant行记录模式:varchar类型的NUL值不占用存储空间,而char类型需要占用存储空间。 二、dynamic和compressed行记录模式 Innodb plugin引入新的文件格式Barracuda,并将以前支持的compact和redundant行记录模式称为Antelope文件格式。 Barracuda文件格式包含两种新的行记录格式:Dynamic和Compressed。 这两种文件格式在处理行溢出时候,Antelope会存放768个前缀字节,Barracuda只会存放20个字节的指针,见下图。

  • 【MySQL】LOAD DATA

    03月 17, 2011

    在使用LOAD DATA到MySQL的时候,有2种情况: (1)在远程客户端(需要添加选项:--local-infile=1)导入远程客户端文本到MySQL,需指定LOCAL(默认就是ignore),加ignore选项会放弃数据,加replace选项会更新数据,都不会出现唯一性约束问题。 (2)在本地服务器导入本地服务器文本到MySQL,不指定LOACL,出现唯一性约束冲突,会失败回滚,数据导入不进去,这个时候就需要加ignore或者replace来导入数据。 测试如下:

  • 【MySQL】关于table cache的相关参数

    03月 15, 2011

    一、状态值和变量: 1.1 在MySQL的show status中有2个状态值:Open_tables和Opened_tables。这2个值代表的意思如下: Open_tables  :代表当前打开表的数量。 Opened_tables:代表自从MySQL启动后,打开表的数量。 关于MySQL怎么打开关闭表的具体细节参考文档:<How MySQL Opens and Closes Tables>。 (1)对于myisam存储引擎,打开1张表需要2个文件描述符(一个.MYD文件,一个.MYI文件)。 (2)对于innodb存储引擎,开启表的独立表空间(innodb_file_per_table)打开1张表只需要1个文件描述符(一个.ibd文件)。 【MySQL Variable】 对于上面的状态值,对应的5.1.3版本后的MySQL变量参数为table_open_cache,而早期版本为:table_cache,该参数值的代表MySQL可以缓存的打开表时候的最大文件描述符。

  • 【MySQL】Innodb的多版本一致性读

    03月 8, 2011

    在前面Innodb事务隔离级别中可以看到,在Innodb默认的的重复读(repeatable read)事物隔离级别下,可以实现重复读。和串行读(serializable)事物隔离级别实现重复读不同的是,串行读(serializable)为实现重复读,会在SELECT的时候隐式的对行添加共享读锁。而Innodb在实现过程并不对行加锁,而是通过使用多版本并发控制(MVCC,Multiviersion Concurrency Control)的技术来实现Consistent Nonlocking Reads。 关于Innodb的多版本一致性读的实现机制和Oracle的实现很类似,都是通过rollback segment来实现的,具体如下说明: 1、rollback segment的存放位置 在Innodb的逻辑存储结构中也有表空间tablespace/segment/extent的概念,具体结构层次见下图(图片来自<InnoDB Internals: InnoDB File Formats and Source Code Structure>)。默认情况下,所有的数据都放到共享表空间ibdata1中,如果启用了参数innodb_file_per_table的话,每张表内的数据可以放到自己独立的放到一个表空间中。不管是否开启该参数,rollback segment都是存放在共享表空间中。

  • 【MySQL】Innodb事务隔离级别

    03月 3, 2011

    一、事务隔离级别 ANSI/ISO SQL标准定义了4中事务隔离级别:未提交读(read uncommitted),提交读(read committed),重复读(repeatable read),串行读(serializable)。 对于不同的事务,采用不同的隔离级别分别有不同的结果。不同的隔离级别有不同的现象。主要有下面3种现在: 1、脏读(dirty read):一个事务可以读取另一个尚未提交事务的修改数据。 2、非重复读(nonrepeatable read):在同一个事务中,同一个查询在T1时间读取某一行,在T2时间重新读取这一行时候,这一行的数据已经发生修改,可能被更新了(update),也可能被删除了(delete)。 3、幻像读(phantom read):在同一事务中,同一查询多次进行时候,由于其他插入操作(insert)的事务提交,导致每次返回不同的结果集。 不同的隔离级别有不同的现象,并有不同的锁定/并发机制,隔离级别越高,数据库的并发性就越差,4种事务隔离级别分别表现的现象如下表: 隔离级别 脏读 非重复读 幻像读 read uncommitted 允许 允许 允许 read committed 允许 允许 repeatable read 允许 serializable 二、数据库中的默认事务隔离级别 在Oracle中默认的事务隔离级别是提交读(read committed)。 对于MySQL的Innodb的默认事务隔离级别是重复读(repeatable read)。可以通过下面的命令查看: mysql> SELECT @@GLOBAL.tx_isolation, @@tx_isolation; +-----------------------+-----------------+ | @@GLOBAL.tx_isolation | @@tx_isolation  | +-----------------------+-----------------+ | REPEATABLE-READ | REPEATABLE-READ | +-----------------------+-----------------+ 1 row [...]

  • 【MySQL】INSERT ... ON DUPLICATE KEY UPDATE/REPLACE

    11月 28, 2010

    INSERT ... ON DUPLICATE KEY UPDATE/REPLACE都可以处理插入一条记录碰到主键或唯一性约束冲突的情况,不过2者的实现方式不同: 1、INSERT ... ON DUPLICATE KEY UPDATE方式遇到冲突会update一下。 2、REPLACE方式遇到冲突会把原来的记录delete,然后再insert进去。 具体见下面的测试: -- (1)表结构和数据 mysql>show create table test\G; *************************** 1. row *************************** Table: test Create Table: CREATE TABLE `test` ( `pk_col` int(11) NOT NULL AUTO_INCREMENT, `uk_col` int(11) DEFAULT NULL, `col` varchar(10) DEFAULT NULL, PRIMARY KEY (`pk_col`), UNIQUE KEY `uk_test` (`uk_col`) ) ENGINE=InnoDB DEFAULT [...]

 
Powered by BlogCN.com - WordPress and MySQL. Theme by Shlomi Noach, openark.org