mysql – 虫虫之家 http://ijz.me 略懂技术 Sat, 11 Oct 2014 06:53:54 +0000 zh-Hans hourly 1 https://wordpress.org/?v=6.7.2 mysql忘记root密码重置 http://ijz.me/?p=675 http://ijz.me/?p=675#respond Sat, 11 Oct 2014 06:53:54 +0000 http://ijz.me/?p=675 如果忘记了root密码,通过禁止认证模式启动mysql 然后重置root密码

win下:

1:进入cmd,停止mysql服务:Net stop mysql

2:执行:mysqld-nt –skip-grant-tables
3:然后另外打开一个命入令行窗口,执行mysql(或者直接进入Mysql Command Line Cilent),此时无需输入密码即可进入。

>use mysql

>update user set password=password(“新密码”) where user=”root”;

>flush privileges;

>exit

4:重新启动mysql-nt服务,就可以用新密码登录了。

linux下:

/etc/init.d/mysqld stop

启动 msyql :/usr/bin/safe_mysqld –skip-grant-tables &

mysql 进入

>use mysql

>update user set password=password(“new_pass”) where user=”root”;

>flush privileges

重启mysql : /etc/init.d/mysqld restart。

]]>
http://ijz.me/?feed=rss2&p=675 0
/zz/MySQL 字符串函数:字符串截取 http://ijz.me/?p=10 http://ijz.me/?p=10#respond Fri, 29 Nov 2013 16:00:00 +0000 http://ijz.me/?p=10 MySQL 字符串截取函数:left(), right(), substring(), substring_index()。还有 mid(), substr()。其中,mid(), substr() 等价于 substring() 函数,substring() 的功能非常强大和灵活。

1. 字符串截取:left(str, length)

mysql> select left(‘sqlstudy.com’, 3);+————————-+| left(‘sqlstudy.com’, 3) |+————————-+| sql |+————————-+

2. 字符串截取:right(str, length)

mysql> select right(‘sqlstudy.com’, 3);+————————–+| right(‘sqlstudy.com’, 3) |+————————–+| com |+————————–+

3. 字符串截取:substring(str, pos); substring(str, pos, len)

3.1 从字符串的第 4 个字符位置开始取,直到结束。

mysql> select substring(‘sqlstudy.com’, 4);+——————————+| substring(‘sqlstudy.com’, 4) |+——————————+| study.com |+——————————+

3.2 从字符串的第 4 个字符位置开始取,只取 2 个字符。

mysql> select substring(‘sqlstudy.com’, 4, 2);+———————————+| substring(‘sqlstudy.com’, 4, 2) |+———————————+| st |+———————————+

3.3 从字符串的第 4 个字符位置(倒数)开始取,直到结束。

mysql> select substring(‘sqlstudy.com’, -4);+——————————-+| substring(‘103fsqlstudy.com’, -4) |+——————————-+| .com |+——————————-+

3.4 从字符串的第 4 个字符位置(倒数)开始取,只取 2 个字符。

mysql> select substring(‘sqlstudy.com’, -4, 2);+———————————-+| substring(‘sqlstudy.com’, -4, 2) |+———————————-+| .c |+———————————-+

我们注意到在函数 substring(str,pos, len)中, pos 可以是负值,但 len 不能取负值。

4. 字符串截取:substring_index(str,delim,count)

4.1 截取第二个 ‘.’ 之前的所有字符。

mysql> select substring_index(‘www.sqlstudy.com.cn’, ‘.’, 2);+————————————————+| substring_index(‘www.sqlstudy.com.cn’, ‘.’, 2) |+————————————————+| www.sqlstudy |+————————————————+

4.2 截取第二个 ‘.’ (倒数)之后的所有字符。

mysql> select substring_index(‘www.sqlstudy.com.cn’, ‘.’, -2);+————————————————-+| substring_index(‘www.sqlstudy.com.cn’, ‘.’, -2) |+————————————————-+| com.cn |+————————————————-+

4.3 如果在字符串中找不到 delim 参数指定的值,就返回整个字符串

mysql> select substring_index(‘www.sqlstudy.com.cn’, ‘.coc’, 1);+—————————————————+| substring_index(‘www.sqlstudy.com.cn’, ‘.coc’, 1) |+—————————————————+| www.sqlstudy.com.cn |+—————————————————+

]]>
http://ijz.me/?feed=rss2&p=10 0
/zz/MySQL 常见的数据存储引擎的介绍和应用 http://ijz.me/?p=11 http://ijz.me/?p=11#respond Fri, 29 Nov 2013 16:00:00 +0000 http://ijz.me/?p=11 以下的文章主要讲述的是MySQL存储引擎的实际应用以及对MySQL数据库中各主要存储引擎的独特特点的描述,希望你浏览完此文章你会在选择数据库存储引擎时带来一些帮助。以下就是文章的具体内容。

MySQL有多种存储引擎:

MyISAM、InnoDB、MERGE、MEMORY(HEAP)、BDB(BerkeleyDB)、EXAMPLE、FEDERATED、ARCHIVE、CSV、BLACKHOLE。

MySQL支持数个存储引擎作为对不同表的类型的处理器。MySQL存储引擎包括处理事务安全表的引擎和处理非事务安全表的引擎:

MyISAM管理非事务表。它提供高速存储和检索,以及全文搜索能力。MyISAM在所有MySQL配置里被支持,它是默认的MySQL存储引擎,除非你配置MySQL默认使用另外一个引擎。

MEMORY存储引擎提供“内存中”表。MERGE存储引擎允许集合将被处理同样的MyISAM表作为一个单独的表。就像MyISAM一样,MEMORY和MERGE存储引擎处理非事务表,这两个引擎也都被默认包含在MySQL中。

注释:MEMORY存储引擎正式地被确定为HEAP引擎。

InnoDB和BDB存储引擎提供事务安全表。BDB被包含在为支持它的操作系统发布的MySQL-Max二进制分发版里。InnoDB也默认被包括在所 有MySQL 5.1二进制分发版里,你可以按照喜好通过配置MySQL来允许或禁止任一引擎。

EXAMPLE存储引擎是一个“存根”引擎,它不做什么。你可以用这个引擎创建表,但没有数据被存储于其中或从其中检索。这个引擎的目的是服务,在 MySQL源代码中的一个例子,它演示说明如何开始编写新存储引擎。同样,它的主要兴趣是对开发者。

NDB Cluster是被MySQL Cluster用来实现分割到多台计算机上的表的存储引擎。它在MySQL-Max 5.1二进制分发版里提供。这个存储引擎当前只被Linux, Solaris, 和Mac OS X 支持。在未来的MySQL分发版中,我们想要添加其它平台对这个引擎的支持,包括Windows。

ARCHIVE存储引擎被用来无索引地,非常小地覆盖存储的大量数据。

CSV存储引擎把数据以逗号分隔的格式存储在文本文件中。

BLACKHOLE存储引擎接受但不存储数据,并且检索总是返回一个空集。

FEDERATED存储引擎把数据存在远程数据库中。在MySQL 5.1中,它只和MySQL一起工作,使用MySQL C Client API。在未来的分发版中,我们想要让它使用其它驱动器或客户端连接方法连接到另外的数据源。

当你创建一个新表的时候,你可以通过添加一个ENGINE 或TYPE 选项到CREATE TABLE语句来告诉MySQL你要创建什么类型的表:

  1. CREATE TABLE t (i INT) ENGINE = INNODB;
  2. CREATE TABLE t (i INT) TYPE = MEMORY;

虽然TYPE仍然在MySQL 5.1中被支持,现在ENGINE是首选的术语。

如何选择最适合你的存储引擎呢?

下述存储引擎是最常用的:

MyISAM:默认的MySQL插件式存储引擎,它是在Web、数据仓储和其他应用环境下最常使用的MySQL存储引擎之一。注意,通过更改STORAGE_ENGINE配置变量,能够方便地更改MySQL服务器的默认存储引擎。

InnoDB:用于事务处理应用程序,具有众多特性,包括ACID事务支持。

BDB:可替代InnoDB的事务引擎,支持COMMIT、ROLLBACK和其他事务特性。

Memory:将所有数据保存在RAM中,在需要快速查找引用和其他类似数据的环境下,可提供极快的访问。

Merge:允许MySQL DBA或开发人员将一系列等同的MyISAM表以逻辑方式组合在一起,并作为1个对象引用它们。对于诸如数据仓储等VLDB环境十分适合。

Archive:为大量很少引用的历史、归档、或安全审计信息的存储和检索提供了完美的解决方案。

Federated:能够将多个分离的MySQL服务器链接起来,从多个物理服务器创建一个逻辑数据库。十分适合于分布式环境或数据集市环境。

Cluster/NDB:MySQL的簇式数据库引擎,尤其适合于具有高性能查找要求的应用程序,这类查找需求还要求具有最高的正常工作时间和可用性。

Other:其他存储引擎包括CSV(引用由逗号隔开的用作数据库表的文件),Blackhole(用于临时禁止对数据库的应用程序输入),以及Example引擎(可为快速创建定制的插件式存储引擎提供帮助)。

请记住,对于整个服务器或方案,你并不一定要使用相同的存储引擎,你可以为方案中的每个表使用不同的MySQL存储引擎,这点很重要。

  1. mysql> show engines;
  2. +————+———+—————————————————————-+
  3. | Engine | Support | Comment |
  4. +————+———+—————————————————————-+
  5. | MyISAM | DEFAULT | Default engine as of MySQL 3.23 with great performance |
  6. | MEMORY | YES | Hash based, stored in memory, useful for temporary tables |
  7. | InnoDB | YES | Supports transactions, row-level locking, and foreign keys |
  8. | BerkeleyDB | NO | Supports transactions and page-level locking |
  9. | BLACKHOLE | NO | /dev/null storage engine (anything you write to it disappears) |
  10. | EXAMPLE | NO | Example storage engine |
  11. | ARCHIVE | NO | Archive storage engine |
  12. | CSV | NO | CSV storage engine |
  13. | ndbcluster | NO | Clustered, fault-tolerant, memory-based tables |
  14. | FEDERATED | NO | Federated MySQL storage engine |
  15. | MRG_MYISAM | YES | Collection of identical MyISAM tables |
  16. | ISAM | NO | Obsolete storage engine |
  17. +————+———+—————————————————————-+

以上的相关内容就是对如何选择合适的MySQL存储引擎以及MySQL各主要存储引擎特点的介绍,望你能有所收获。

]]>
http://ijz.me/?feed=rss2&p=11 0
/zz/MySQL数据库Concat和outfile函数妙用 http://ijz.me/?p=12 http://ijz.me/?p=12#respond Fri, 29 Nov 2013 16:00:00 +0000 http://ijz.me/?p=12 大家有没有接触过这样的需求,采集历史数据库中或者其他数据库中的某些信息,这些信息是另一个服务器需要执行sql的条件。通常我们的处理手段是把这个信息通过sql找出来或导出,然后使用脚本或者手工拼凑新的新的sql语句。在很多紧急情况下(产品bug、数据错乱)会产生这样的需求,这个时候处理的是在线数据库,不能有一点马虎、如果数据量稍微大一点,DBA们就够焦头烂额了。我之前也多次遇见这种情况,我把一些经验介绍给大家。


其实这种情况下使用concat+out file会得到事半功倍的效果。
比如我们需要找到user表中昨天登录过的用户,然后修改修改他们的garbage中某个物品的属性。
由于数据库的结构,只记录用户最后一次登录的时间,所以当前的数据库中不能确定昨天哪些用户登录过。我们需要从备份中去挖出哪些用户昨天登录过,然后再

update garbage set data=value where id=xxx and num=value;

我们通常的做法是通过sql在备份数据中找到对应的用户id,然后导出到一个文件中,通过脚本来循环取id,自动生成要执行的sql,或者手工生成要执行的sql。
现在我们使用concat+out file来实现。

在重现备份数据的服务器上。

select concat('update garb103fage set data=value where id=',id,'and num=value;') from user into outfile  '/tmp/a.txt';

检查生成的文件以后,在线上服务器直接执行

source /tmp/a.txt;

这个语句还有一个妙用,用来杀掉processlist中的某些连接,索然maatkit提供了类似的工具,但是还是没有mysql自己来完成方便。

生成杀连接的语句,当然你可以使用where条件过滤某些类型的连接。

select concat('KILL ',id,';') from information_schema.processlist into outfile  '/tmp/kill.txt';source /tmp/kill.txt;

 

]]>
http://ijz.me/?feed=rss2&p=12 0
mysql slow query log及应用 http://ijz.me/?p=41 http://ijz.me/?p=41#respond Fri, 29 Nov 2013 16:00:00 +0000 http://ijz.me/?p=41 mysql有个slow query log功能就是记录运行比较慢的sql语句到日志里面,通过这个日志可以对数据库运行状态进行分析或者数据库调优。

默认不会开起这个参数,在启动数据库时候加入log-slow-queries和log-slow-time(秒)来开启slow query log。一般来说是修改my.cnf,增加两行:      log_query_time = 1
log-slow-queries = /var/PATH/slow.log
long_query_time 是指执行超过多久的sql会被log下来,这里是1秒。log-slow-queries 日志记录的位置,可以为空,系统会给一个缺省的文件host_name-slow.log。      日志可以记录到文件或者是数据表,或者同时记录到文件和数据表中。

在实际应用中如果发现系统很慢的时候,在分析排除了其他相关问题后,就可以打开slow query log给予一个合适的时间点记录日志。运行一段时间,然后可以分析这些比较慢的语句发现存在的问题。

浏览日志可以通过mysql自带的工具mysqldumpslow

下面简单介绍一下这个工具的参数

-s,是排序方法,后面可以带c,t,l,r和ac,at,al,ar等数值,分别指按照query次数,时间,lock的时间和返回

]]>
http://ijz.me/?feed=rss2&p=41 0
MySQL 性能跟踪语句/zz/ http://ijz.me/?p=42 http://ijz.me/?p=42#respond Fri, 29 Nov 2013 16:00:00 +0000 http://ijz.me/?p=42 本文载自:http://blog.chinaunix.net/u/29134/showart_480834.html

MYSQL5.0家族提供的性能跟踪器确实很爽。
要注意两点。
1、不过版本要在5.0.37之后

手册上介绍:(SHOW PROFILES and SHOW PROFILE were added in MySQL 5.0.37. )
Important
Please note that the SHOW PROFILE and SHOW PROFILES functionality is part of the MySQL 5.0 Community Server only.
2、变量profiling是用户变量,每次都得重新启用。


以下是我做的一些实验。数据很明显,就不多解释了。
mysql> use test
Database changed
mysql> set profiling=1;
Query OK, 0 rows affected (0.00 sec)

mysql> show tables;
+—————-+

| Tables_in_test |
+—————-+

| bag_item |
| bag_user |
| score |
| t |
+—————-+

4 rows in set (0.03 sec)

mysql> select count(*) from t;
+———-+

| count(*) |
+———-+

| 2097152 |
+———-+

1 row in set (0.74 sec)

mysql> show profiles;
+———-+————+————————+
| Query_ID | Duration   | Query                  |
+———-+————+————————+
|     &nb103fsp;  1 | 0.02717000 | show tables            |
|        2 | 0.74770100 | select count(*) from t |
+———-+————+————————+
2 rows in set (0.00 sec)

mysql> show profile for query 2;
+——————————–+———-+
| Status                         | Duration |
+——————————–+———-+
| (initialization)               | 0.000004 |
| checking query cache for query | 0.000044 |
| Opening tables                 | 0.000012 |
| System lock                    | 0.000017 |
| Table lock                     | 0.00003 |
| init                           | 0.000013 |
| optimizing                     | 0.000008 |
| statistics                     | 0.000013 |
| preparing                      | 0.000011 |
| executing                      | 0.000006 |
| Sending data                   | 0.747313 |
| end                            | 0.000014 |
| query end                      | 0.000006 |
| storing result in query cache | 0.000006 |
| freeing items                  | 0.000012 |
| closing tables                 | 0.000009 |
| logging slow query             | 0.000183 |
+——————————–+———-+
17 rows in set (0.00 sec)

mysql> show profile block io,cpu for query 2;
+——————————–+———-+———-+————+————–+—————+
| Status                         | Duration | CPU_user | CPU_system | Block_ops_in | Block_ops_out |
+——————————–+———-+———-+————+————–+—————+
| (initialization)               | 0.000004 | 0        | 0          |            0 |             0 |
| checking query cache for query | 0.000044 | 0        | 0          |            0 |    &103fnbsp;        0 |
| Opening tables                 | 0.000012 | 0        | 0          |            0 |             0 |
| System lock                    | 0.000017 | 0        | 0          |            0 |             0 |
| Table lock                     | 0.00003 | 0        | 0          |            0 |             0 |
| init                           | 0.000013 | 0        | 0          |            0 |             0 |
| optimizing                     | 0.000008 | 0        | 0          |            0 |             0 |
| statistics                     | 0.000013 | 0        | 0          |            0 |             0 |
| preparing                      | 0.000011 | 0        | 0          |            0 |             0 |
| executing                      | 0.000006 | 0        | 0          |            0 |             0 |
| Sending data                   | 0.747313 | 0.746887 | 0          |            0 |             0 |
| end                            | 0.000014 | 0        | 0          |            0 |             0 |
| query end  &nb103fsp;                   | 0.000006 | 0        | 0          |            0 |             0 |
| storing result in query cache | 0.000006 | 0        | 0          |            0 |             0 |
| freeing items                  | 0.000012 | 0        | 0          |            0 |             0 |
| closing tables                 | 0.000009 | 0        | 0          |            0 |             0 |
| logging slow query             | 0.000183 | 0        | 0          |            0 |             0 |
+——————————–+———-+———-+————+————–+—————+
17 rows in set (0.00 sec)

mysql> insert into t(username) select username from t;
Query OK, 2097152 rows affected (34.17 sec)
Records: 2097152 Duplicates: 0 Warnings: 0

mysql> show profiles;
+———-+————-+————————————————+
| Query_ID | Duration    | Query                                          |
+———-+————-+————————————————+
|        1 | 0.02717000 | show tables                                    |
|        2 | 0.74770100 | select count(*) from t                         |
|        3 | 0.00004200 | show prifile for query 2                       |
|        4 | 34.30410100 | insert into t(username) select username from t |
+———-+————-+————————————————+
4 rows in set (0.00 sec)

mysql> show profile cpu,block io,memory,swaps for query 4;
+——————————+———–+———–+————+————–+—————+——-+
| Status                       | Duration | CPU_user | CPU_system | Block_ops_in | Block_ops_out | Swaps |
+——————————+———–+———–+————+————–+—————+——-+
| (initialization)             | 0.000038 | 0         | 0          |            0 |             0 |     0 |
| checking permissions         | 0.000016 | 0         | 0          |            0 |             0 |     0 |
| Opening tables               | 0.000014 | 0         | 0          |            0 |             0 |     0 |
| System lock                  | 0.000007 | 0         | 0          |            0 |             0 |     0 |
| Table lock                   | 0.000013 | 0         | 0          |            0 |             0 |     0 |
| init                         | 0.000015 | 0         | 0          |            0 |             0 |     0 |
| optimizing                   | 0.000006 | 0         | 0          |            0 |             0 |     0 |
| statistics                   | 0.000012 | 0         | 0          |            0 |             0 |     0 |
| preparing                    | 0.000011 | 0         | 0          |            0 |             0 |     0 |
| Creating tmp table           | 0.000029 | 0         | 0          |            0 |           &nbs103fp; 0 |     0 |
| executing                    | 0.000005 | 0         | 0          |            0 |             0 |     0 |
| Copying to tmp table         | 1.262877 | 1.24981   | 0.012998   |            0 |             0 |     0 |
| converting HEAP to MyISAM    | 0.384814 | 0.187971 | 0.19797    |            0 |             0 |     0 |
| Copying to tmp table on disk | 1.417069 | 1.203817 | 0.191971   |            0 |             0 |     0 |
| Sending data                 | 31.104185 | 13.965877 | 0.843872   |            0 |             0 |     0 |
| end                          | 0.000017 | 0         | 0          |            0 |             0 |     0 |
| removing tmp table           | 0.134872 | 0         | 0.029995   |            0 |             0 |     0 |
| end                          | 0.000026 | 0         | 0          |            0 |             0 |     0 |
| query end                    | 0.000006 | 0         | 0          |            0 |             0 |     0 |
| freeing items                | 0.000011 | 0         | 0          |            0 |             0 |     0 |
| closing tables               | 0.000009 | 0         | 0          |            0 |     &n103fbsp;       0 |     0 |
| logging slow query           | 0.000049 | 0         | 0          |            0 |             0 |     0 |
+——————————+———–+———–+————+————–+—————+——-+
22 rows in set (0.00 sec)

mysql> select count(*) from t;
+———-+
| count(*) |
+———-+
| 4194304 |
+———-+
1 row in set (1.51 sec)

]]>
http://ijz.me/?feed=rss2&p=42 0
总结MYSQL的优化/zz/ http://ijz.me/?p=122 http://ijz.me/?p=122#respond Fri, 29 Nov 2013 16:00:00 +0000 http://ijz.me/?p=122 本文载自:http://blog.chinaunix.net/u/29134/showart_264480.html

1.数据库的设计
尽量把数据库设计的更小的占磁盘空间.
1).尽可能使用更小的整数类型.(mediumint就比int更合适).
2).尽可能的定义字段为not null,除非这个字段需要null.(这个规则只适合字段为KEY的情形)
3).如果没有用到变长字段的话比如varchar,那就采用固定大小的纪录格式比如char.(CHAR 总是比VARCHR快)


4).表的主索引应该尽可能的短.这样的话每条纪录都有名字标志且更高效.
5).只创建确实需要的索引。索引有利于检索记录,但是不利于快速保存记录。如果总是要在表的组合字段上做搜索,那么就在这些字段上创建索引。索引的第一部分必须是最常使用的字段.如果总是需要用到很多字段,首先就应该多复制这些字段,使索引更好的压缩。
(这条只适合MYISAM引擎的表,对于INNODB则在保存记录的时候关系不大,因为INNODB是以事务为基础的,如果想快速保存记录的话,特别是大批量的导入记录的时候)
6).所有数据都得在保存到数据库前进行处理。
7).所有字段都得有默认值。
8).在某些情况下,把一个频繁扫描的表分成两个速度会快好多。在对动态格式表扫描以取得相关记录时,它可能使用更小的静态格式表的情况下更是如此。
(具体的表现为:MYISAM表的MERGE103f类型,以及MYISAM和INNODB通用的分区,详情见手册)
9).不会用到外键约束的地方尽量不要使用外键。
2.系统的用途
1).及时的关闭对MYSQL的连接。
2).explain 复杂的SQL语句。(这样能确定你的SELECT 语句怎么优化最佳)
3).如果两个关联表要做比较话,做比较的字段必须类型和长度都一致.(在数据庞大的时候建立INDEX)
4).LIMIT语句尽量要跟order by或者 distinct.这样可以避免做一次full table scan.
5).如果想要清空表的所有纪录,建议用truncate table tablename而不是delete from tablename.
不过有一个问题,truncate 不会在事务处理中回滚。因为她要调用create table 语句。
(Truncate Table 语句先删除表然后再重建,这个是属于文件界别的,所以自然快N多)
实测例子:
song2为INNODB表。
mysql> select count(1) from song2;
+———-+
| count(1) |
+———-+
|   500000 |
+———-+
1 row in set (0.91 sec)

mysql> delete from song2;
Query OK, 500000 rows affected (15.70 sec)
mysql> truncate table song2;
Query OK, 502238 rows affected (0.17 sec)

mysql>
{
这一点手册上有详细解释:

13.2.9. TRUNCATE语法TRUNCATE [TABLE] tbl_name

TRUNCATE TABLE用于完全清空一个表。从逻辑上说,该语句与用于删除所有行的DELETE语句等同,但是在有些情况下,两者在使用上有所不同。

对于InnoDB表,如果有需要引用表的外键限制,则TRUNCATE TABLE被映射到DELETE上;否则使用快速删减(取消和重新创建表)。使用TRUNCATE TABLE重新设置AUTO_INCREMENT计数器,设置时不考虑是否有外键限制。

对于其它存储引擎,在MySQL 5.1中,TRUNCATE TABLE与DELETE FROM有以下几处不同:

·         删减操作会取消并重新创建表,这比一行一行的删除行要快很多。

·         删减操作不能保证对事务是安全的;在进行事务处理和表锁定的过程中尝试进行删减,会发生错误。

·         被删除的行的数目没有被返回。

·         只要表定义文件tbl_name.frm是合法的,则可以使用TRUNCATE TABLE把表重新创建为一个空表,即使数据或索引文件已经被破坏。

·         表管理程序不记得最后被使用的AUTO_INCREMENT值,但是会从头开始计数。即使对于MyISAM和InnoDB也是如此。MyISAM和InnoDB通常不再次使用序列值。

·         当被用于带分区的表时,TRUNCATE TABLE会保留分区;即,数据和索引文件被取消并重新创建,同时分区定义(.par)文件不受影响。

TRUNCATE TABLE是在MySQL中采用的一个Oracle SQL扩展。


}
6).能使用STORE PROCEDURE 或者 USER FUNCTION的时候.(ROUTINE总是减少了服务器端的开销)
7).在一条insert语句中采用多重纪录插入格式.而且使用load data infile来导入大量数据,这比单纯的indert快好多.(在MYSQL中具体表现为:INSERT INTO TABLEQ VALUES (),(),…();)
(还有就是在MYISAM表中插入大量记录的时候先禁用到KEYS后面再建立KEYS,具体表现语句:
ALTER TABLE TABLE1 DISABLE KEYS;ALTER TABLE TABLE1 ENABLE KEYS103f;
而对于INNNODB 表在插入前先 set autocommit=0;完了后:set autocommit=1;这样效率比较高。)
8).经常OPTIMIZE TABLE 来整理碎片.
9).还有就是date 类型的数据如果频繁要做比较的话尽量保存在unsigned int 类型比较快。
3.系统的瓶颈
1).磁盘搜索.
并行搜索,把数据分开存放到多个磁盘中,这样能加快搜索时间.
2).磁盘读写(IO)
可以从多个媒介中并行的读取数据。
3).CPU周期
数据存放在主内存中.这样就得增加CPU的个数来处理这些数据。
4).内存带宽
当CPU要将更多的数据存放到CPU的缓存中来的话,内存的带宽就成了瓶颈.

]]>
http://ijz.me/?feed=rss2&p=122 0
MySQL创建用户与授权 http://ijz.me/?p=7 http://ijz.me/?p=7#respond Wed, 10 Jul 2013 10:16:44 +0000 http://ijz.me/?p=4 一, 创建用户:

命令:CREATE USER ‘username’@’host’ IDENTIFIED BY ‘password’;

说明:username – 你将创建的用户名, host – 指定该用户在哪个主机上可以登陆,如果是本地用户可用localhost, 如果想让该用户可以从任意远程主机登陆,可以使用通配符%. password – 该用户的登陆密码,密码可以为空,如果为空则该用户可以不需要密码登陆服务器.

例子: CREATE USER ‘dog’@’localhost’ IDENTIFIED BY ‘123456’;
CREATE USER ‘pig’@’192.168.1.101_’ IDENDIFIED BY ‘123456’;
CREATE USER ‘pig’@’%’ IDENTIFIED BY ‘123456’;
CREATE USER ‘pig’@’%’ IDENTIFIED BY ”;
CREATE USER ‘pig’@’%’;

二,授权:

命令:GRANT privileges ON databasename.tablename TO ‘username’@’host’

说明: privileges – 用户的操作权限,如SELECT , INSERT , UPDATE 等.如果要授予所的权限则使用ALL.;databasename – 数据库名,tablename-表名,如果要授予该用户对所有数据库和表的相应操作权限则可用*表示, 如*.*.

例子: GRANT SELECT, INSERT ON test.user TO ‘pig’@’%’;
GRANT ALL ON *.* TO ‘pig’@’%’;

注意:用以上命令授权的用户不能给其它用户授权,如果想让该用户可以授权,用以下命令:
GRANT privileges ON databasename.tablename TO ‘username’@’host’ WITH GRANT OPTION;

三.设置与更改用户密码

命令:SET PASSWORD FOR ‘username’@’host’ = PASSWORD(‘newpassword’);如果是当前登陆用户用SET PASSWORD = PASSWORD(“newpassword”);

例子: SET PASSWORD FOR ‘pig’@’%’ = PASSWORD(“123456”);

四.撤销用户权限

命令: REVOKE privilege ON databasename.tablename FROM ‘username’@’host’;

说明: privilege, databasename, tablename – 同授权部分.

例子: REVOKE SELECT ON *.* FROM ‘pig’@’%’;

注意: 假如你在给用户’pig’@’%’授权的时候是这样的(或类似的):GRANT SELECT ON test.user TO ‘pig’@’%’, 则在使用REVOKE SELECT ON *.* FROM ‘pig’@’%’;命令并不能撤销该用户对test数据库中user表的SELECT 操作.相反,如果授权使用的是GRANT SELECT ON *.* TO ‘pig’@’%’;则REVOKE SELECT ON test.user FROM ‘pig’@’%’;命令也不能撤销该用户对test数据库中user表的Select 权限.

具体信息可以用命令SHOW GRANTS FOR ‘pig’@’%’; 查看.

五.删除用户

命令: DROP USER ‘username’@’host’;’

]]>
http://ijz.me/?feed=rss2&p=7 0