仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 767|回复: 7
打印 上一主题 下一主题

[学习教程] 公布你晓得MySQL 10条不为人知的技能吗

[复制链接]
若相依 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-16 20:12:57 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
最近由权威调查机构Evans数据公司进行的一项调查显示,MySQL在过去两年已经获得了25%的市场份额。该调查公司还预测,相比其他的开源数据库和闭源数据库。本文为你先容MySQL中十条不为人知的技能。
MySQL易学易用,且附带丰厚的手艺文档,这二个要素使之被普遍使用。但是,跟着MySQL开展之敏捷,即便一个MySQL内行偶然也会为该软件出乎意料的功效叹息。本文将为你先容这些不为人知的特征。
以xml格局检察查询了局
经由过程利用传统―xml选项挪用MySQL命令行客户程序,你能够以XML格局(而不是传统的列表情势)来检察MySQL查询了局。假如你盘算将查询输入与别的程序集成在一同,这一技能十分有效,这里是一个例子:
表A
shell>mysql--xml
mysql>SELECT*FROMtest.stories;
<?xmlversion="1.0"?>
<resultsetstatement="SELECT*FROMtest.stories">
<row>
<id>1</id>
<headline>Thisisatest</headline>
<tstamp>2005-07-2800:14:57</tstamp>
</row>
<row>
<id>2</id>
<headline>Thisisthesecondtest</headline>
<tstamp>2005-07-2800:15:11</tstamp>
</row>
</resultset>
2rowsinset(0.11sec)
疾速重修索引
一般情形下,假如你想改动服务器的全文搜刮变量,你必要在表格中从头创建全文索引,以确保你的更新失掉映照。这一操纵将会消费大批的工夫,出格是假如你必要处置良多数据的时分。一种疾速的办理办法是利用REPAIRTABLE命令,以下为演示历程:
表B
mysql>REPAIRTABLEcontentQUICK;
+-----------+--------+----------+----------+
|Table|Op|Msg_type|Msg_text|
+-----------+--------+----------+----------+
|content|repair|status|OK|
+-----------+--------+----------+----------+
1rowinset(0.05sec)
紧缩必定的表格范例
假如你处置的是只读MyISAM表格,MySQL同意你将其紧缩以节俭磁盘空间。对此可使用包含myisampack,以下所示:
表C
shell>myisampackmovies.MYI
ComPRessingmovies.MYD:(146records)
-Calculatingstatistics
-Compressingfile
41.05%
利用传统SQL
MySQL撑持SQL查询中的传统用法,撑持IF与CASE布局。以下是一个复杂的例子:
表D
mysql>SELECTIF(priv=1,admin,guest)AsusertypeFROMprivsWHEREusername=joe;
+----------+
|usertype|
+----------+
|admin|
+----------+
1rowinset(0.00sec)
以CSV格局输入表格数据
MySQL输入文件包括一个全体SQL命令列表。假如你想将输入文件导进到MySQL,这一功效十分有用,但假如方针程序(好比Excel)不克不及与SQL互相通信,这一办法将行欠亨。在这类情形下,能够经由过程告知MySQL以CSV格局创建输入文件,这类CSV格局很便利地导进到尽年夜部分的程序。这里演示了mysqldump的操纵历程:
shell>mysqldump-T.--fields-terminated-by=","mydbmytable
这将在以后目次中天生一个文本文件,包括来自mydb.mytable列表中以逗号为距离符的纪录。
以激活strict形式削减“bad”数据的呈现
MySQL服务器可以以多种分歧的形式运转,而每种都针关于特定的目标而优化。在默许情形下,没有设置形式。但是,经由过程在服务器命令行中增加以下选项能够很简单地改动形式的设置并将MySQL以“strict”形式运转:
shell>mysqld--sql_mode="STRICT_ALL_TABLES"&
在“strict”形式下,经由过程MySQL的中断查询实行并前往一个毛病,服务器的良多主动修改功效都被有效化。一样,该形式下也将会实行更加严厉的工夫反省。
监督服务器
你能够经由过程运转SHOWSTATUS命令取得一份服务器运转与统计的呈报,包含翻开毗连的次数,激活查询次数,服务器一般运转工夫等等。比方:
表E
mysql>SHOWSTATUS;
+------------------+-------+
|Variable_name|Value|
+------------------+-------+
|Aborted_clients|0|
|Aborted_connects|0|
...
|Uptime|851|
+------------------+-------+
156rowsinset(0.16sec)
主动前往CREATETABLE代码
MySQL同意你主动取得SQL命令从头创建一个特定的表格。只复杂地运转SHOWCREATETABLE命令,并检察表格创建代码,以下所示:
表F
mysql>SHOWCREATETABLEproducts;
-----------------------------------------------------
|Table|CreateTable
+----------+-----------------------------------------
|products|CREATETABLE`products`(
`id`int(8)NOTNULLauto_increment,
`name`varchar(255)NOTNULLdefault,
`price`int(10)defaultNULL,
PRIMARYKEY(`id`)
)ENGINE=MyISAMDEFAULTCHARSET=latin1|
+----------+-----------------------------------------
1rowinset(0.27sec)
创建一个更加有效的命令提醒:
在缺省情形下,MySQL命令行客户程序显现一个复杂的mysql>提醒符。但是,你可使用特定的修正内容来改动这一提醒符使之变得更加无效,这些内容包含:以后用户称号,主机称号,和以后选择的数据库。以下所示:
表G
mysql>promptU:/d>
PROMPTsettoU:/d>
root@localhost:/db1>
从这里的文档文件你能够取得撑持MySQL客户程序变动的一个完全列表。
MySQL的低成本来自于其简单性吗?它的普及性是由于其低成本吗?其实,在MySQL的最“好”与最“不好”的功能之间没有明显的分界线,但它们组合在一起就形成了一副让我们欣赏的作品。
飘灵儿 该用户已被删除
沙发
发表于 2015-1-18 18:47:04 | 只看该作者
其中最有名的应该是row_number了。这个终于解决了用临时表生成序列号的历史,而且SQLServer2005的row_number比Oracle的更先进。因为它把Orderby集成到了一起,不用像Oracle那样还要用子查询进行封装。
第二个灵魂 该用户已被删除
板凳
发表于 2015-1-25 22:01:21 | 只看该作者
比如日志传送、比如集群。。。
admin 该用户已被删除
地板
发表于 2015-2-4 08:30:34 | 只看该作者
光写几个SQL实在叫无知。
不帅 该用户已被删除
5#
发表于 2015-2-9 20:10:12 | 只看该作者
总感觉自己还是不会SQL
再见西城 该用户已被删除
6#
发表于 2015-2-27 20:29:14 | 只看该作者
可以动态传入参数,省却了动态SQL的拼写。
小妖女 该用户已被删除
7#
发表于 2015-3-16 22:34:04 | 只看该作者
备份方面可能还是一个老大难的问题。不能单独备份几个表总是感觉不爽。灵活备份的问题不知道什么时候才能解决。
简单生活 该用户已被删除
8#
发表于 2015-3-23 06:29:32 | 只看该作者
语句级快照和事务级快照终于为SQLServer的并发性能带来了突破。个人感觉语句级快照大家应该应用。事务级快照,如果是高并发系统还要慎用。如果一个用户总是被提示修改不成功要求重试时,会杀人的!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-12-23 07:39

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表