myisam怎么念_my怎么怎么读
ja要学到什么程度才能胜任工作
+-------------------------------+Ja作为面向对象编程语言,不仅吸收了C++语言的各种优点,还摒弃了C++里难以理解的多继承、指针等概念,因此Ja语言具有功能强大和简单易用的两个特征。也正是由于其简单性、可移植性、安全性、动态性等特点,Ja成为了端的顶梁柱,保护着网站的一方安全。既然Ja语言这么,那么,如果想要以ja去找工作,一个Ja初学者要学多少Ja知识,才能找到份Ja工作呢?
myisam怎么念_my怎么怎么读
myisam怎么念_my怎么怎么读
首先我们先要了解一下在工作过程中需要用到的ja基础知识有哪些:
1、synchronizedstatic修饰类和方法有什么区别?
2、HashMap的原理,底层数据结构,rehash的过程,指针碰撞问题?
3、HashMap的线程安全问题,为什么会产生这样的线程安全问题?
3、ConcurrentHashMap的数据结构,底层原理,put和get是否线程安全?
5、JaIO的一些内容,包括NIO,BIO等?
如果以上的基础知识大家能够运用自如,也就是说工作过程中做一些基本的事情还是可以的,但是是远远不过的,如果想要在工作过程中有自己的一席之地还是要学会以下几点,才能够勉强进入企业工作。
一、Ja线程池的构造方法,里面参数的含义,以及原理:
1、volatile和ThreadLocal解决了什么问题
2、CAS在Ja中的具体实现
3、Ja虚拟机的构成,以及一个Ja对象的生命周期,还有堆栈和方法区中存储的内容
4、JVM的GC过程,包括一些实际问题的分析,比如说明一个现象,让你分析可能是什么原因会导致这样的问题,应该如何对JVM参数进行调优
5、synchronized和Lock的区mysql:myisam的引擎,用mysql自带的mysqlhostcopy热备时,需要给表加读锁,影响dml作。innodb的引擎,它会备份innodb的表和索引,但是不会备份.frm文件。用ibbackup备份时,会有一个日志文件记录备份期间的数据变化,因此可以不用锁表,不影响其他用户使用数据库。但此工具是收费的。别,以及底层实现原理
6、FullGC和MinorGC触发的条件
7、GCRoots的选择
8、jmap,jstat,jstack等的使用场景,MAT等
9、ClassLoader的加载过程
10、CountDownLatch、CyclicBarrier和Semaphore等
11、Ja8的新特性等
二、数据库:这里的数据库包含两种,一种一般是MySQL,另外是NoSql数据库,包括Redis、MongoDB等。一般会问的问题有:
1、innerjoin和leftjoin等的区别
2、SQL调优,explain,profile等
4、ACID
5、数据库的事务隔离级别,以及他们分别能解决什么问题
7、Redis是单线程还是多线程
8、Redis的持久化
9、悲观锁和乐观锁的含义
10最左前缀索引,索引的数据结构,聚簇索引等(这块还没搞明白)
三、框架
因为spring是我们常用的框架,所以这块的内容会问的比较多,也会比较细。
1、Spring的两大特性(IoC和AOP)
2、Spring的bean的生命周期
3、Spring是如何解决Bean的循环引用问题的
4、AOP的两种实现方式,以及两者的区别(这里其实使用了,具体分为两种,一种是JDK的,主要使用的是JDK的反射,还有一种是CGLib,两者区别可以自己搜索,文章比较多)
5、AOP一般的使用场景
6、Spring的事务原理
MyBatis:这块问到的比较简单些:
1、$和#的区别
2、MyBatis和Hibernate的区别
3、源码,一般问的比较少
Dubbo:因为平时自己用到了Dubbo,所以这块会有问到:
1、RPC的原理
2、Dubbo是如何完成远程调用的
3、Dubbo如何进行调优
4、Dubbo的通信协议
5、Dubbo是如何实现负载均衡的
ZooKeeper:
1、ZK的使用场景
2、ZK的选举机制
3、ZK的类型
数据结构和算法:
这块的内容是基础,如果面试官怀疑你的能力,一般一会问到这部分内容,比如树的遍历、快速排序等。
linux:
一般会问一些命令的使用,然后会举一个实际的场景,让你用命令去排查问题,这块自己不是很熟,需要尽快加强。
随着ja的普及,懂Ja的人越来越多,企业也会对求职者提出更高的要求,他们更希望一些马上能上手工作的,所以倾向于一些有项目开发经验的,这也是为什么那么多的大学计算机专业毕业的大学生找不到工作的原因,所以越来越多的大学生才会选择毕业前后参加一些专业的Ja培训班来增加实战经验。只有增加自我实力才能出于不败之地。
mysql数据库怎么根据ibd文件恢复数据
| Key_blocks_used | 413543 |有两种方法,一种方法使用mysql的check table和repair table 的sql语句,另一种方法是使用MySQL提供的多个myisamchk, isamchk数据检测恢复工具。前者使用起来比较简便。使用。
2. myisamchk, isamchk1. check table 和 repair table
登陆mysql 终端:
mysql -uxxxxx -p dbname
check table tabTest;
repair table tabTest;
进行修复,修复之后可以在用check table命令来进行检查。在新版本的phpMyAdmin里面也可以使用check/repair的功能。
其中myisamchk适用于MYISAM类型的数据表,而isamchk适用于ISAM类型的数据表。这两条命令的主要参数相同,一般新的系统都使用MYISAM作为缺省的数据表类型,这里以myisamchk为例子进行说明。当发现某个数据表出现问题时可以使用:
myisamchk tablename.MYI
进行检测,如果需要修复的话,可以使用:
myisamchk -of tablename.MYI
关于myisamchk的详细参数说明,可以参见它的使用帮助。需要注意的时在进行修改时必须确保MySQL没有访问这个数据表,保险的情况下是在进行检测时把MySQLShutdown掉。
另外可以把下面的命令放在你的rc.local里面启动MySQL前:
[ -x /tmp/mysql.sock ] && /pathtochk/myisamchk -of /DATA_DIR//.MYI
其中的/tmp/mysql.sock是MySQL的Sock文件位置,对于使用RPM安装的用户应该是/var/lib/mysql/mysql.sock,对于使用源码安装则是/tmp/mysql.sock可以根据自己的实际情况进行变更,而pathtochk则是myisamchk所在的位置,DATA_DIR是你的MySQL数据库存放的位置。
需要注意的时,如果你打算把这条命令放在你的rc.local里面,必须确认在执行这条指令时MySQL必须没有启动!检测修复所有数据库(表)
mysql 5.6 安装完毕没有 设置端口和设置账户的界面 直接就结束 怎么解决
编辑my.ini文件
[云数据库就是远程数据库,用来保存关系型数据(结构化数据)的,比如MySQL 等client]
#password = your_password
port = 3306
socket = /tmp/mysql.如上图,写入硬盘的为0,3次中间表,说明我们的默认值足够用了sock
.........
[mysqld]
port = 3306
socket = /tmp/mysql.sock
..........
其它就不写出来了
在DOS窗口下运行netstat -ano
查看一下你修改的端口是否成功
如何用MySQL workbench查询数据
drv_template install_check_products install_versioned tables_22189.sql versioned有两种方法,一种方法使用mysql的check table和repair table 的sql语句,另一种方法是使用MySQL提供的多个myisamchk, isamchk数据检测恢复工具。前者使用起来比较简便。使用。
1. check table 和 repair table
登陆mysql 终端:
mysql -uxxxxx -p dbname
check table tabTest;
repair table tabTest;
进行修复,修复之后可以在用check table命令来进行检查。在新版本的phpMyAdmin里面也可以使用check/repair的功能。
其中myisamchk适用于MYISAM类型的数据表,而isamchk适用于ISAM类型的数据表。这两条命令的主要参数相同,一般新的系统都使用MYISAM作为缺省的数据表类型,这里以myisamchk为例子进行说明。当发现某个数据表出现问题时可以使用:
myisamchk tablename.MYI
进行检测,如果需要修复的话,可以使用:
myisamchk -of tablename.MYI
关于myisamchk的详细参数说明,可以参见它的使用帮助。需要注意的时在进行修改时必须确保MySQL没有访问这个数据表,保险的情况下是在进行检测时把MySQLShutdown掉。
另外可以把下面的命令放在你的rc.local里面启动MySQL前:
[ -x /tmp/mysql.sock ] && /pathtochk/myisamchk -of /DATA_DIR//.MYI
其中的/tmp/mysql.sock是MySQL的Sock文件位置,对于使用RPM安装的用户应该是/var/lib/mysql/mysql.sock,对于使用源码安装则是/tmp/mysql.sock可以根据自己的实际情况进行变更,而pathtochk则是myisamchk所在的位置,DATA_DIR是你的MySQL数据库存放的位置。
需要注意的时,如果你打算把这条命令放在你的rc.local里面,必须确认在执行这条指令时MySQL必须没有启动!检测修复所有数据库(表)
TABLE 语句
具体语法:TABLE table_name [ORDER BY column_name] [LIMIT number [OFFSET number]]
其实从语法上看,可以排序,也可以过滤记录集,不过比较简单,没有 SELECT 那么强大。
示例 1
简单的建一张很小的表 y1,记录数为 10 条。表 t1,插入 10 条记录
mysql-(ytt/3305)->create table t1 (r1 int,r2 int);
Query OK, 0 rows affected (0.02 sec)
mysql-(ytt/3305)->insert into t1
with recursive aa(a,b) as (
select 1,1
union all
select a+1,ceil(rand()20) from aa where a < 10
) select from aa;
Query OK, 10 rows affected (0.00 sec)
Records: 10 Duplicates: 0 Warnings: 0简单全表扫描mysql-(ytt/3305)->select from t1;+------+------+| r1 | r2 |+------+------+| 1 | 1 || 2 | 9 || 3 | 9 || 4 | 17 || 5 | 17 || 6 | 16 || 7 | 6 || 8 | 1 || 9 | 10 || 10 | 3 |+------+------+10 rows in set (0.00 sec)
TABLE 结果mysql-(ytt/3305)->table t1;+------+------+| r1 | r2 |+------+------+| 1 | 1 || 2 | 9 || 3 | 9 || 4 | 17 || 5 | 17 || 6 | 16 || 7 | 6 || 8 | 1 || 9 | 10 || 10 | 3 |+------+------+10 rows in set (0.00 sec)
看下 table 的执行mysql-(ytt/3305)->explain table t1 order by r1 limit 2G 1. row id: 1 select_type: SIMPLE table: t1 partitions: NULL type: ALLsible_keys: NULL key: NULL key_len: NULL ref: NULL rows: 10 filtered: 100.00 Extra: Using filesort1 row in set, 1 warning (0.00 sec)
其实可以看到 TABLE 内部被 MySQL 转换为 SELECT 了。mysql-(ytt/3305)->show warningsG 1. row Ll: Note Code: 1003Message: / select#1 / select `ytt`.`t1`.`r1` AS `r1`,`ytt`.`t1`.`r2` AS `r2` from `ytt`.`t1` order by `ytt`.`t1`.`r1` limit 21 row in set (0.00 sec)
那其实从上面简单的例子可以看到 TABLE 在内部被转成了普通的 SELECT 来处理。示例 2应用于子查询里的子表。这里要注意,内表的字段数量必须和外表过滤的字段数量一致。克隆表 t1 结构mysql-(ytt/3305)->create 指定索引缓冲区的大小,它决定索引处理的速度,尤其是索引读的速度。为了最小化磁盘的 I/O , MyISAM 存储引擎的表使用键高速缓存来缓存索引,这个键高速缓存的大小则通过 key-buffer-size 参数来设置。如果应用系统中使用的表以 MyISAM 存储引擎为主,则应该适当增加该参数的值,以便尽可能的缓存索引,提高访问的速度。table t2 like t1;Query OK, 0 rows affected (0.02 sec)
克隆表 t1 数据mysql-(ytt/3305)->insert into t2 table t1;Query OK, 10 rows affected (0.00 sec)Records: 10 Duplicates: 0 Warnings: 0
table t1 被当做内表,表 t1 有两个字段,必须同时满足 t2 检索时过滤的字段也是两个。mysql-(ytt/3305)->select from t2 where (r1,r2) in (table t1);+------+------+| r1 | r2 |+------+------+| 1 | 1 || 2 | 9 || 3 | 9 || 4 | 17 || 5 | 17 || 6 | 16 || 7 | 6 || 8 | 1 || 9 | 10 || 10 | 3 |+------+------+10 rows in set (0.00 sec)
注意:这里如果过滤的字段数量和子表数量不一致,则会报错。
怎么使用Mysql Workbench 查询mysql数据库
有两种方法,一种方法使用mysql的check table和repair table 的sql语句,另一种方法是使用MySQL提供的多个myisamchk, isamchk数据检测恢复工具。前者使用起来比较简便。使用。
1. check table 和 repair table
登陆mysql 终端:
mysql -uxxxxx -p dbname
check table tabTest;
repair table tabTest;
进行修复,修复之后可以在用check table命令来进行检查。在新版本的phpMyAdmin里面也可以使用check/repair的功能。
其中myisamchk适用于MYISAM类型的数据表,而isamchk适用于ISAM类型的数据表。这两条命令的主要参数相同,一般新的系统都使用MYISAM作为缺省的数据表类型,这里以myisamchk为例子进行说明。当发现某个数据表出现问题时可以使用:
myisamchk tablename.MYI
进行检测,如果需要修复的话,可以使用:
myisamchk -of tablename.MYI
关于myisamchk的详细参数说明,可以参见它的使用帮助。需要注意的时在进行修改时必须确保MySQL没有访问这个数据表,保险的情况下是在进行检测时把MySQLShutdown掉。
有两种方法,一种方法使用mysql的check table和repair table 的sql语句,另一种方法是使用MySQL提供的多个myisamchk, isamchk数据检测恢复工具。前者使用起来比较简便。使用。
1. check table 和 repair table
登陆mysql 终端:
mysql -uxxxxx -p dbname
check table tabTest;
repair table tabTest;
进行修复,修复之后可以在用check table命令来进行检查。在新版本的phpMyAdmin里面也可以使用check/repair的功能。
其中myisamchk适用于MYISAM类型的数据表,而isamchk适用于ISAM类型的数据表。这两条命令的主要参数相同,一般新的系统都使用MYISAM作为缺省的数据表类型,这里以myisamchk为例子进行说明。当发现某个数据表出现问题时可以使用:
myisamchk tablename.MYI
进行检测,如果需要修复的话,可以使用:
myisamchk -of tablename.MYI
关于myisamchk的详细参数说明,可以参见它的使用帮助。需要注意的时在进行修改时必须确保MySQL没有访问这个数据表,保险的情况下是在进行检测时把MySQLShutdown掉。
另外可以把下面的命令放在你的rc.local里面启动MySQL前:
[ -x /tmp/mysql.sock ] && /pathtochk/myisamchk -of /DATA_DIR//.MYI
其中的/tmp/mysql.sock是MySQL的Sock文件位置,对于使用RPM安装的用户应该是/var/lib/mysql/mysql.sock,对于使用源码安装则是/tmp/mysql.sock可以根据自己的实际情况进行变更,而pathtochk则是myisamchk所在的位置,DATA_DIR是你的MySQL数据库存放的位置。
需要注意的时,如果你打算把这条命令放在你的rc.local里面,必须确认在执行这条指令时MySQL必须没有启动!检测修复所有数据库(表)
mariadb 如何实现内存使用化
6、Redis的几种数据结构查询内存占用
3、InnoDB和Myisam的区别使用以下命令可以知道mysql的配置使用多少 RAM
SELECT ( @@key_buffer_size
+ @@query_cache_size
+ @@innodb_buffer_pool_size
+ @@innodb_additional_mem_pool_size
+ @@innodb_log_buffer_size
+ @@max_connections ( @@read_buffer_size
+ @@read_rnd_buffer_size
+ @@sort_buffer_size
+ @@join_buffer_size
+ @@binlog_cache_size
+ @@thread_stack
+ @@tmp_table_size
)) / (1024 1024 1024) AS MAX_MEMORY_GB;
可以使用mysql计算器来计算内存使用
下面是理论,可以直接到配置
如何调整配置
key_buffer_size(MyISAM索引用)
怎么设
show global status like 'key_read%';
+------------------------+-------------+
| Variable_name | Value |
+------------------------+-------------+
| Key_read_requests | 27813678764 |
| Key_reads | 6798830 |
--------------------- key_buffer_size通过检查状态值Key_read_requests和Key_reads,可以知道key_buffer_size设置是否合理。
比例key_reads / key_read_requests应该尽可能的低,至少是1:100,1:1000更好。
show global status like '%created_tmp_disk_tables%';
key_buffer_size只对MyISAM表起作用。即使你不使用MyISAM表,但是内部的临时磁盘表是MyISAM表,也要使用该值。可以使用检查状态值created_tmp_disk_tables得知详情。
对于1G内存的机器,如果不使用MyISAM表,值是16M(8-64M)
另一个参考如下
show global status like 'key_blocks_u%';
+------------------------+-------------+
| Variable_name | Value |
+------------------------+-------------+
| Key_blocks_unused | 0 |
+------------------------+-------------+
Key_blocks_unused表示未使用的缓存簇(blocks)数,Key_blocks_used表示曾经用到的的blocks数,比如这台,所有的缓存都用到了,要么增加key_buffer_size,要么就是过渡索引了,把缓存占满了。比较理想的设置:
可以根据此工式来动态的调整Key_blocks_used / (Key_blocks_unused + Key_blocks_used) ≈ 80%
show engines;
查询存储引擎
innodb_buffer_pool_size (innodb索引用)
这个参数和MyISAM的key_buffer_size有相似之处,但也是有别的。这个参数主要缓存innodb表的索引,数据,插入数据时的缓冲。为Innodb加速优化首要参数。
该参数分配内存的原则:这个参数默认分配只有8M,可以说是非常小的一个值。
如果是专用的DB,且以InnoDB引擎为主的场景,通常可设置物理内存的50%,这个参数不能动态更改,所以分配需多考虑。分配过大,会使Swap占用过多,致使Mysql的查询特慢。
如果是非专用DB,可以先尝试设置成内存的1/4,如果有问题再调整
query_cache_size(查询缓存)
缓存机制简单的说就是缓存sql文本及查询结果,如果运行相同的sql,直接从缓存中取到结果,而不需要再去解析和执行sql。如果表更改了,那么使用这个表的所有缓冲查询将不再有效,查询缓存值的相关条目被清空。更改指的是表中任何数据或是结构的改变,包括INSERT、UPDATE、DELETE、TRUNCATE、ALTER TABLE、DROP TABLE或DROP DATABASE等,也包括那些映射到改变了的表的使用MERGE表的查询。显然,这对于频繁更新的表,查询缓存是不适合的,而对于一些不常改变数据且有大量相同sql查询的表,查询缓存会节约很大的性能。
注意:如果你查询的表更新比较频繁,而且很少有相同的查询,不要使用查询缓存。因为这样会消耗很大的系统性能还没有任何的效果
要不要打开?
query_cache_size=128M
query_cache_type=1
看看命中结果来进行进一步的判断
mysql> show status like '%Qcache%';
+-------------------------+-----------+
| Variable_name | Value |
+-------------------------+-----------+
| Qcache_free_blocks | 669 |
| Qcache_free_memory | 1325160 |
| Qcache_hits | 1158 |
| Qcache_inserts | 284824 |
| Qcache_lowmem_prunes | 2741 |
| Qcache_not_cached | 1755767 |
| Qcache_queries_in_cache | 579 |
| Qcache_total_blocks | 1853 |
+-------------------------+-----------+8 rows in set (0.00 sec)
Qcache_free_blocks:表示查询缓存中目前还有多少剩余的blocks,如果该值显示较大,则说明查询缓存中的内存碎片过多了,可能在一定的时间进行整理。
Qcache_free_memory:查询缓存的内存大小,通过这个参数可以很清晰的知道当前系统的查询内存是否够用,是多了,还是不够用,DBA可以根据实际情况做出调整。
Qcache_hits:表示有多少次命中缓存。我们主要可以通过该值来验证我们的查询缓存的效果。数字越大,缓存效果越理想。
Qcache_inserts: 表示多少次未命中然后插入,意思是新来的SQL请求在缓存中未找到,不得不执行查询处理,执行查询处理后把结果insert到查询缓存中。这样的情况的次数,次数越多,表示查询缓存应用到的比较少,效果也就不理想。当然系统刚启动后,查询缓存是空的,这很正常。
Qcache_lowmem_prunes:该参数记录有多少条查询因为内存不足而被移除出查询缓存。通过这个值,用户可以适当的调整缓存大小。
Qcache_not_cached: 表示因为query_cache_type的设置而没有被缓存的查询数量。
Qcache_total_blocks:当前缓存的block数量。
我们可以看到现网命中1158,未缓存的有1755767次,说明我们这个系统命中的太少了,表变动比较多,不什么开启这个功能涉及参数
query_cache_limit:允许 Cache 的单条 Query 结果集的容量,默认是1MB,超过此参数设置的 Query 结果集将不会被 Cache
query_cache_min_res_unit:设置 Query Cache 中每次分配内存的最小空间大小,也就是每个 Query 的 Cache 最小占用的内存空间大小
query_cache_size:设置 Query Cache 所使用的内存大小,默认值为0,大小必须是1024的整数倍,如果不是整数倍,MySQL 会自动调整降低最小量以达到1024的倍数
query_cache_type:控制 Query Cache 功能的开关,可以设置为0(OFF),1(ON)和2(DEMAND)三种,意义分别如下: 0(OFF):关闭 Query Cache 功能,任何情况下都不会使用 Query Cache 1(ON):开启 Query Cache 功能,但是当 SELECT 语句中使用的 SQL_NO_CACHE 提示后,将不使用Query Cache 2(DEMAND):开启 Query Cache 功能,但是只有当 SELECT 语句中使用了 SQL_CACHE 提示后,才使用 Query Cache
query_cache_wlock_invalidate:控制当有写锁定发生在表上的时刻是否先失效该表相关的 Query Cache,如果设置为 1(TRUE),则在写锁定的同时将失效该表相关的所有 Query Cache,如果设置为0(FALSE)则在锁定时刻仍然允许读取该表相关的 Query Cache。
innodb_additional_mem_pool_size(InnoDB内部目录大小)
InnoDB 字典信息缓存主要用来存放 InnoDB 存储引擎的字典信息以及一些 internal 的共享数据结构信息,也就是存放Innodb的内部目录,所以其大小也与系统中所使用的 InnoDB 存储引擎表的数量有较大关系。
这个值不用分配太大,通常设置16M够用了,默认8M,如果设置的内存大小不够,InnoDB 会自动申请更多的内存,并在 MySQL 的 Error Log 中记录信息。
innodb_log_buffer_size (日志缓冲)
表示InnoDB写入到磁盘上的日志文件时使用的缓冲区的字节数,默认值为16M。一个大的日志缓冲区允许大量的事务在提交之前不用写日志到磁盘,所以如果有更新,插入或删除许多行的事务,则使日志缓冲区更大一些可以节省磁盘IO
通常设为64M足够
max_connections (并发连接)
MySQL的max_connections参数用来设置连接(用户)数。每个连接MySQL的用户均算作一个连接,max_connections的默认值为100。
这个参数实际起作用的值(实际可连接数)为16384,即该参数值不能超过16384,即使超过也以16384为准;
增加max_connections参数的值,不会占用太多系统资源。系统资源(CPU、内存)的占用主要取决于查询的密度、效率等;
该参数设置过小的最明显特征是出现”Too many connections”错误
mysql> show variables like '%max_connect%';
+-----------------------+-------+
| Variable_name | Value |
+-----------------------+-------+
| extra_max_connections | 1 |
| max_connect_errors | 100 |
| max_connections | 2048 |
+-----------------------+-------+3 rows in set (0.00 sec)
mysql> show status like 'Threads%';
+-------------------+---------+
| Variable_name | Value |
+-------------------+---------+
| Threads_cached | 0 |
| Threads_running | 1 |
+-------------------+---------+4 rows in set (0.00 sec)
可以看到此时的并发数也就是Threads_connected=1,还远远达不到2048
mysql> show variables like 'open_files_limit';
+------------------+-------+
| Variable_name | Value |
+------------------+-------+
| open_files_limit | 65535 |
+------------------+-------+1 row in set (0.00 sec)
max_connections 还取决于作系统对单进程允许打开文件数的限制
也就是说如果作系统限制单个进程可以打开100个文件
那么 max_connections 设置为200也没什么用
MySQL 的 open_files_limit 参数值是在MySQL启动时记录的作系统对单进程打开文件数限制的值
可以使用 show variables like 'open_files_limit'; 查看 open_files_limit 值
ulimit -n65535
或者直接在 Linux 下通过ulimit -n命令查看作系统对单进程打开文件数限制 ( 默认为1024 )
connection级内存参数(线程独享)
connection级参数,是在每个connection次需要使用这个buffer的时候,一次性分配设置的内存。
排序性能
mysql对于排序,使用了两个变量来控制sort_buffer_size和 max_length_for_sort_data, 不象oracle使用SGA控制. 这种方式的缺点是要单独控制,容易出现排序性能问题.
mysql> SHOW GLOBAL STATUS like '%sort%';
+---------------------------+--------+
| Variable_name | Value |
+---------------------------+--------+
| Sort_merge_passes | 0 |
| Sort_priority_queue_sorts | 1409 |
| Sort_range | 0 |
| Sort_rows | 843479 |
| Sort_scan | 13053 |
+---------------------------+--------+5 rows in set (0.00 sec)
如果发现Sort_merge_passes的值比较大,你可以考虑增加sort_buffer_size 来加速ORDER BY 或者GROUP BY 作,不能通过查询或者索引优化的。我们这为0,那就没必要设置那么大。
读取缓存
read_buffer_size = 128K(默认128K)为需要全表扫描的MYISAM数据表线程指定缓存
read_rnd_buffer_size = 4M:(默认256K)首先,该变量可以被任何存储引擎使用,当从一个已经排序的键值表中读取行时,会先从该缓冲区中获取而不再从磁盘上获取。
大事务binlog
mysql> show global status like 'binlog_cache%';
+-----------------------+----------+
| Variable_name | Value |
+-----------------------+----------+
| Binlog_cache_disk_use | 220840 |
| Binlog_cache_use | 67604667 |
+-----------------------+----------+2 rows in set (0.00 sec)
Binlog_cache_disk_use表示因为我们binlog_cache_size设计的内存不足导致缓存二进制日志用到了临时文件的次数
Binlog_cache_use 表示 用binlog_cache_size缓存的次数
当对应的Binlog_cache_disk_use 值比较大的时候 我们可以考虑适当的调高 binlog_cache_size 对应的值
如上图,现网是32K,我们加到64K
join语句内存影响
如果应用中,很少出现join语句,则可以不用太在乎join_buffer_size参数的设置大小。
如果join语句不是很少的话,个人建议可以适当增大join_buffer_size到1MB左右,如果内存充足可以设置为2MB。
线程内存影响
Thread_stack:每个连接线程被创建时,MySQL给它分配的内存大小。当MySQL创建一个新的连接线程时,需要给它分配一定大小的内存堆栈空间,以便存放客户端的请求的Query及自身的各种状态和处理信息。
mysql> show status like '%threads%';
+-------------------------+---------+
| Variable_name | Value |
+-------------------------+---------+
| Delayed_insert_threads | 0 |
| Slow_launch_threads | 0 |
| Threadpool_idle_threads | 0 |
| Threadpool_threads | 0 |
| Threads_cached | 0 |
| Threads_connected | 1 |
| Threads_created | 9649301 |
| Threads_running | 1 |
mysql> show status like 'connections';
+---------------+---------+
| Variable_name | Value |
+---------------+---------+
| Connections | 9649311 |
+---------------+---------+1 row in set (0.00 sec)
如上:系统启动到现在共接受到客户端的连接9649311次,共创建了9649301个连接线程,当前有1个连接线程处于和客户端连接的状态。而在Thread Cache池缓存了0个连接线程(Threads_cached)。
Thread Cache 命中率:
Thread_Cache_Hit = (Connections - Threads_created) / Connections ;
一般在系统稳定运行一段时间后,Thread Cache命中率应该保持在90%左右才算正常。
内存临时表
tmp_table_size 控制内存临时表的值,超过限值后就往硬盘写,写的位置由变量 tmpdir 决定
max_heap_table_size 用户可以创建的内存表(memory table)的大小.这个值用来计算内存表的行数值。
Order By 或者Group By作多的话,加大这两个值,默认16M
mysql> show status like 'Created_tmp_%';
+-------------------------+-------+
| Variable_name | Value |
+-------------------------+-------+
| Created_tmp_disk_tables | 0 |
| Created_tmp_files | 626 |
| Created_tmp_tables | 3 |
+-------------------------+-------+3 rows in set (0.00 sec)
mariadb 配置
注意这里只innodb引擎
内存配置只关注有注释的行
[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sockdefault-storage-engine=INNODB
character-set-server=utf8
collation-server=utf8_general_ci
user=mysql
symbolic-links=0# global settings
table_cache=65535table_definition_cache=65535max_allowed_packet=4M
net_buffer_length=1M
bulk_insert_buffer_size=16M
query_cache_type=0 #是否使用查询缓冲,0关闭
query_cache_size=0 #0关闭,因为改表作多,命中低,开启消耗cpu
# shared
key_buffer_size=8M #保持8M MyISAM索引用
innodb_buffer_pool_size=4G #DB专用mem50%,非DB专用mem15%到25%
myisam_sort_buffer_size=32M
max_heap_table_size=16M #中间表大小
tmp_table_size=16M #中间表大小
# per-thread
sort_buffer_size=256K #加速排序缓存大小
read_buffer_size=128k #为需要全表扫描的MYISAM数据表线程指定缓存
read_rnd_buffer_size=4M #已排序的表读取时缓存,如果比较大内存就到6M
join_buffer_size=1M #join语句多时加大,1-2M
thread_stack=256k #线程空间,256K or 512K
binlog_cache_size=64K #大事务binlog # big-tables
innodb_file_per_table = 1skip-external-locking
max_connections=2048 #连接数
skip-name-resolve
# slow_query_log
slow_query_log_file = /var/log/mysql-slow.log
long_query_time = 30group_concat_max_len=65536# according to tuning-primer.sh
thread_cache_size = 8thread_concurrency = 16# set variables
concurrent_insert=2
运行时修改
使用以下命令来修改变量
set global {要改的key} = {值}; (立即生效重启后失效)
set @@{要改的key} = {值}; (立即生效重启后失效)
set @@global.{要改的key} = {值}; (立即生效重启后失效)
试验
ERROR 1238 (HY000): Variable 'innodb_buffer_pool_size' is a read only variable
mysql> set @@global.thread_stack=262144;
ERROR 1238 (HY000): Variable 'thread_stack' is a read only variable
mysql> set @@global.binlog_cache_size=65536;
Query OK, 0 rows affected (0.00 sec)
mysql> set @@join_buffer_size=1048576;
Query OK, 0 rows affected (0.00 sec)
mysql> set @@read_rnd_buffer_size=4194304;
Query OK, 0 rows affected (0.00 sec)
mysql> set @@sort_buffer_size=262144;
Query OK, 0 rows affected (0.00 sec)
mysql> set @@read_buffer_size=131072;
Query OK, 0 rows affected (0.00 sec)
mysql> set global key_buffer_size=8388608;
Query OK, 0 rows affected (0.39 sec)
我们可以看到innodb_buffer_pool_size和thread_stack报错了,他们只能改配置文件,在运行时是只读的。 以下直接使用set @@global.binlog_cache_size=65536;
set @@join_buffer_size=1048576;
set @@read_rnd_buffer_size=4194304;
set @@sort_buffer_size=262144;
set @@read_buffer_size=131072;
set global key_buffer_size=8388608;
linux 下访问sql server
ERROR 1071 (42000): Specified key was too long; max key length is 1000 bytes解压文件 tar xvf odbc-sqlserver-1.4.27-linux-x86-glibc.tar
# ls
all.tar dsn_template_ssl install_intro lnses_template unixodbc.tar.md5sum
all.tar.md5sum echo install_lnse lnse.txt unixodbc.tar.sum
all.tar.sum essqlservertarerr install_linkpaths licshell unixODBC_version.txt
check_root.txt ident install_other_products OSname.txt uodbc
cmpver install install_paths sqlserver_create_dsn.sh uodbcinstall.txt
config.log install_check_linux INSTALL.txt SQLSERVER_uodbcinstall.txt uodbc_tmp
drv_template_2236 install_check_root intro.txt tee
drv_template_ssl install_check_sunos licclient testlib
dsn_22189 install_check_tools lnse_request.txt unixODBC
dsn_template install_init lnses.out unixodbc.tar
执行install文件安装ODBC驱动.(用root用户执行)
#./install
这个了很多作.每步都会弹出提示让你进入下一步.
步提示Press the return key to read lnse,按回车即可.
接下来会刷很多lnse信息.Do you accept the lnse? (q=quit, yes, no):
如果接受,输入yes.
然后会执行一些检查命令,查看系统是否有基本一些命令工具的安装.按回车进入下一步.
紧接着会检查一些的包是否安装.按回车进入下一步.
此时会提示安装unixODBC需要依赖ODBC driver mar.按RETURN进入下一步.
然后会让你输入一些个人信息.不想输的可以直接回车跳过.
接下来会有一步让选择lnce.会有三个OPTION.
[0] Exit
[1] View existing lnses
[2] SQL ODBC Driver V1.2
Please choose the product you would like a lnse for by entering its number or enter one of the other options.
可以选择2,但是选择之后发现这个lnse是收费的..如果想出钱的话就去买.我是直接quit了的.进入下一步.
按要求一步步输入IP地址,端口,用户名,密码,实例.它会自动测试你提供的东西是否正确.当有足够信息去连接数据库后,会提示输入一个DSN名字.即为你的数据库起一个名字,方便后边登陆的时候使用.
这一步完成后,配置基本完成了.
别高兴的太早,还要配置一个环境变量.
将LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/easysoft/sqlserver:/usr/local/easysoft/lib export LD_LIBRARY_PATH写入到用户profile文件中.注意路径要正确.
现在就可以验证啦.
#cd /usr/local/easysoft/unixODBC/bin
#./isql -v dsn_name
完成。Oracle的索引类型
数据库的种类有哪些?
很长时间以来,关系型数据库一直是大公司的专利,市场被Oracle/DB2等企业数据库牢牢把持。但是随着互联网的崛起、开源社区的发展,上世纪九十年代MySQL1.0的发布,标志着关系型数据库的领域社区终于有可选择的方案。 MySQL
个介绍的单机RDBMS就是MySQL。相信大多数朋友都已经对MySQL非常熟悉,基本上MySQL的成长史就是互联网的成长史。我接触的个MySQL版本是MySQL4.0,到后来的MySQL5.5更是经典——基本所有的互联网公司都在使用。MySQL也普及了「可插拔」引擎这一概念,针对不同的业务场景选用不同的存储引擎是MySQLtuning的一个重要的方式。比如对于有事务需求的场景使用InnoDB;对于并发读取的场景MyISAM可能比较合适;但是现在我绝大多数情况还是使用InnoDB,毕竟5.6后已经成为了的默认引擎。大多数朋友都基本知道什么场景适用MySQL(几乎所有需要持久化结构化数据的场景),我就不赘述了。 另外值得一提的是MySQL5.6中引入了多线程和GTID,使得故障恢复和主从的运维变得比较方便。另外,5.7(| Threads_connected | 1 |目前处于GA版本)是MySQL的一个重大更新,主要是读写性能和性能上有了长足的进步(在5.6先设置成这样跑一段时间版本中实现了SCHEMA级别的并行,不过意义不大,倒是MariaDB的多线程并行大放异彩,有不少人因为这个特性选择MariaDB。MySQL5.7MTS支持两种模式,一种是和5.6一样,另一种则是基于binloggroupcommit实现的多线程,也就是MASTER上同时提交的binlog在SLE端也可以同时被apply,实现并行)。如果有单机数据库技术选型的朋友,基本上只需要考虑5.7或者MariaDB就好了,而且5.6、5.7由Oracle接手后,性能和稳定性上都有了明显的提升。
PostgreSQL PostgreSQL的历史也非常悠久,其前身是UCB的Ingres,主持这个项目的MichaelStronebraker于2023年获得图灵奖。后来项目更名为Post-Ingres,项目基于BSDlnse下开源。1995年几个UCB的学生为Post-Ingres开发了SQL的接口,正式发布了PostgreSQL95,随后一步步在开源社区中成长起来。和MySQL一样,PostgreSQL也是一个单机的关系型数据库,但是与MySQL方便用户过度扩展的SQL文法不一样的是,PostgreSQL的SQL支持非常强大,不管是内置类型、JSON支持、GIS类型以及对于复杂查询的支持,PL/SQL等都比MySQL强大得多,而且从代码质量上来看,PostgreSQL的代码质量是优于MySQL的,另外相对于MySQL5.7以前的版本,PostgreSQL的SQL优化器比MySQL强大很多,几乎所有稍微复杂的查询PostgreSQL的表现都优于MySQL。
从近几年的趋势上来看,PostgreSQL的势头也很强劲,我认为PostgreSQL的不足之处在于没有MySQL那样强大的社区和群众基础。MySQL经过那么多年的发展,积累了很多的运维工具和实践,但是PostgreSQL作为后起之秀,拥有更的设计和更丰富的功能。电脑培训发现PostgreSQL9以后的版本也足够稳定,在做新项目技术选型的时候,是一个很好的选择。另外也有很多新的数据库项目是基于PostgreSQL源码的基础上进行二次开发,比如Greenplum等。
mysql索引名太长怎么办
在oracle中物理结构不一样。createindexINDEX_NAMEonTABLE_NAME(ACCNO,ZONENO,CINO)会根据ACCNO,ZONENO,CINO生成一个BTree索引树。createindexINDEX_NAMEonTABLE_NAME(ACCNO)。1. 数据库版本:阿里云RDS MySQL5.1
MYSQL里用 字段名 like '%字符串%',ORACLE里也可以用 字段名 like '%字符串%' 但这种方法不能使用索引, 速度不快。mysql> select @@version;
| @@version |
| 5.1.61-Alibaba-rds-201404-log |
1 row in set (0.00 sec)
2. 测试的表结构信息
mysql> show create table tb2G
1. row
Table: tb2
Create Table: CREATE TABLE `tb2` (
`a` varchar(255) DEFAULT NULL,
`b` varchar(255) DEFAULT NULL,
`c` varchar(255) DEFAULT NULL,
`d` varchar(1000) DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=utf8
1 row in set (0.00 sec)
3. 测试加索引
(1)添加单列索引,能够添加成功(报出warning),但实际添加的是前缀索引。
mysql> alter table tb2 add index idx1 (d);
Query OK, 0 rows affected, 2 warnings (0.00 sec)
Records: 0 Duplicates: 0 Warnings: 0
mysql> show warnings;
+---------+------+----------------------------------------------------------+
| Ll | Code | Message |
+---------+------+----------------------------------------------------------+
| Warning | 1071 | Specified key was too long; max key length is 1000 bytes |
| Warning | 1071 | Specified key was too long; max key length is 1000 bytes |
+---------+------+----------------------------------------------------------+
2 rows in set (0.00 sec)
表结构信息:
mysql> show create table tb2G
1. row
Table: tb2
Create Table: CREATE TABLE `tb2` (
`a` varchar(255) DEFAULT NULL,
`b` varchar(255) DEFAULT NULL,
`c` varchar(255) DEFAULT NULL,
`d` varchar(1000) DEFAULT NULL,
KEY `idx1` (`d`(333))
) ENGINE=MyISAM DEFAULT CHARSET=utf8
1 row in set (0.00 sec)
(2)添加组合索引,会执行失败。
mysql> alter table tb2 add index idx1 (a,b);
4. 分析
myisam存储引擎在创建索引的时候,索引键长度是有一个较为严格的长度限制的,所有索引键长度总和不能超过1000,而且不是实际数据长度的总和,而是索引键字段定义长度的总和。
主要字符集的计算方式:
latin1 = 1 byte = 1 character
uft8 = 3 byte = 1 character
gbk = 2 byte = 1 character
百度数据库有多大
如果出现的结果说Status是OK,则不用修复,如果有Error,可以用:因为可以根据使用情况不断扩充!
截止到2005年12月31日,共有17.65亿的网站信息,目前在库容2040g左右
问题二:百度GOOGLE等用的什么数据库呀,为什么几百万条数据读时还那么快? 数据加上索引就,再上一定的查询优化,数据多速度也会很快,
我们公司现在的系统每天有上千万条记录,查询的时间也可以在几秒钟之内完成的
问题三:百度的储存数据库有多大? 理论上,只要百度公司不倒闭,它的数据库是无限大的!
因为可以根据使用情况不断扩充!
截止到2005年12月31日,共有17.65亿的网站信息,目前在库容2040g左右
问题四:百度的数据库有多大? 有专业团队维护,包括数据更新,全方位了
问题五:百度的数据库有多大? 这个应该是商业机密吧,就算你打估计也不会给你准确数据
问题六:数据库大小有什么具体的区别么 是不同的两个概念
数据库是用户作的所有数据要保存在数据库,由网站后台程序进行读写。
网站空间是保存网站程序和数据库的硬盘空间
网站程序以文件的形式存在,文件存在磁盘上,占用一定的磁盘空间
数据库也以文件的形式存在,文件存在磁盘上,也占用一定的磁盘空间
问题七:mysql 数据库可以有多大 在老版本的MySQL 3.22中,MySQL的单表限大小为4GB,当时的MySQL的存储引擎还是ISAM存储引擎。但是,当出现MyISAM存储引擎之后,也就是从MySQL 3.23开始,MySQL单表限制就已经扩大到了64PB了(文档显示)。也就是说,从目前的技术环境来看,MySQL数据库的MyISAM存储 引擎单表大小限制已经不是有MySQL数据库本身来决定,而是由所在主机的OS上面的文件系统来决定了。
而MySQL另外一个的存储引擎之一Innodb存储数据的策略是分为两种的,一种是共享表空间存储方式,还有一种是独享表空间存储方式。
当使用共享表空间存储方式的时候,Innodb的所有数据保存在一个单独的表空间里面,而这个表空间可以由很多个文件组成,一个表可以跨多个文件存在,所 以其大小限制不再是文件大小的限制,而是其自身的限制。从Innodb的文档中可以看到,其表空间的限制为64TB,也就是说,Innodb的单 表限制基本上也在64TB左右了,当然这个大小是包括这个表的所有索引等其他相关数据。
而当使用独享表空间来存放Innodb的表的时候,每个表的数据以一个单独的文件来存放,这个时候的单表限制,又变成文件系统的大小限制了。
问题八:百度开发者中心云存储和云数据库有什么区别 如果是备份数据的话,用云存储就可以了
你给软件做备份功能,用云存储的话,可以备份一般的数据,也可以备份数据库文件都没有问题,用不到云数据库
问题九:数据库有几大类? 三大类型 mysql sqlserver plsql
问题十:目前数据库都有哪些 根据存储模型划分,数据库类型主要可分为:网状数据库(Network Database)、关系数据库(Relational Database)、树状数据库(Hierarchical Database)、面向对象数据库(Object-oriented Database)等。商业应用中主要是关系数据库,比如Oracle、DB2、Sybase、MS SQL 、Informax、MySQL等。全部罗列出来是没有意义的,数据库太多了,你不说你的工作是涉及哪方面,恐怕很难提供更适合你的数据库。
初级应用一般是ACCESS 配合的脚本程序一般是 ASP ASP.NET JSPMICROSOFT SQL 比较复杂点 不过功能强大很多 配合的脚本和首先我们还是先把表结构说下:用户表tb_user结构如下:不要在索引列上进行运算作,索引将失效。ACCESS的一样MYSQL和PHP的组合是比较完美的如果你需要处理1000W条数据以上级别的数据,那以上的都不合适,一般用的比较多的是ORACLE 这个入门难度非常大如果想学的话就先学MICROSOFT SQL吧,这个网上教学比较多,ASP.NET 2.0,应用的是非常广泛的。
请问下mysql和oracle的区别
| Threads_created | 9626717 |1. Oracle是大型数据库而Mysql是中小型数据库,Oracle市场占有率达40%,Mysql只有20%左右,同时Mysql是开源的而Oracle价格非常高。
2. Oracle支持大并发,大访问量,是OLTP的工具。
3. 安装所用的空间别也是很大的,Mysql安装完后才152M而Oracle有3G左右,且使用的时候Oracle占用特别大的内存空间和其他机器性能。
4.Oracle也Mysql作上的一些区别
①主键
Mysql一般使用自动增长类型,在创建表时只要指定表的主键为auto increment,插入记录时,不需要再指定该记录的主键值,Mysql将自动增长;Oracle没有自动增长类型,主键一般使用的序列,插入记录时将序列号的下一个值付给该字段即可;只是ORM框架是只要是native主键生成策略即可。
②单引号的处理
MYSQL里可以用双引号包起字符串,ORACLE里只可以用单引号包起字符串。在插入和修改字符串前必须做单引号的替换:把所有出现的一个单引号替换成两个单引号。
③翻页的SQL语句的处理
MYSQL处理翻页的SQL语句比较简单,用LIMIT 开始位置, 记录个数;ORACLE处理翻页的SQL语句就比较繁琐了。每个结果集只有一个ROWNUM字段标明它的位置, 并且只能用ROWNUM<100, 不能用ROWNUM>80
④ 长字符串的处理
长字符串的处理ORACLE也有它特殊的地方。INSERT和UPDATE时可作的字符串长度小于等于4000个单字节, 如果要插入更长的字符串, 请考虑字段用CLOB类型,方法借用ORACLE里自带的DBMS_LOB程序包。插入修改记录前一定要做进行非空和长度判断,不能为空的字段值和超出长度字段值都应该提出,返回上次作。
⑤空字符的处理
⑥字符串的模糊比较
⑦Oracle实现了ANSII SQL中大部分功能,如,事务的隔离级别、传播特性等而Mysql在这方面还是比较的弱。
区别如下:
一、并发性
并发性是oltp数据库最重要的特性,但并发涉及到资源的获取、共享与锁定。
mysql:mysql以表级锁为主,对资源锁定的粒度很大,如果一个session对一个表加锁时间过长,会让其他session无法更新此表中的数据。
虽然InnoDB引擎的表可以用行级锁,但这个行级锁的机制依赖于表的索引,如果表没有索引,或者sql语句没有使用索引,那么仍然使用表级锁。
oracle:oracle使用行级锁,对资源锁定的粒度要小很多,只是锁定sql需要的资源,并且加锁是在数据库中的数据行上,不依赖与索引。所以oracle对并发性的支持要好很多。
二、一致性
oracle:oracle支持serializable的隔离级别,可以实现别的读一致性。每个session提交后其他session才能看到提交的更改。oracle通过在undo表空间中构造多版本数据块来实现读一致性,每个session查询时,如果对应的数据块发生变化,oracle会在undo表空间中为这个session构造它查询时的旧的数据块。
mysql:mysql没有类似oracle的构造多版本数据块的机制,只支持read commited的隔离级别。一个session读取数据时,其他session不能更改数据,但可以在表插入数据。
session更新数据时,要加上排它锁,其他session无法访问数据。
三、事务
oracle很早就完全支持事务。
mysql在innodb存储引擎的行级锁的情况下才支持事务。
四、数据持久性
oracle保证提交的数据均可恢复,因为oracle把提交的sql作线写入了在线联机日志文件中,保持到了磁盘上,如果出现数据库或主机异常重启,重启后oracle可以考联机在线日志恢复客户提交的数据。
mysql:默认提交sql语句,但如果更新过程中出现db或主机重启的问题,也许会丢失数据。
五、提交方式
oracle默认不自动提交,需要用户手动提交。
六、逻辑备份
oracle逻辑备份时不锁定数据,且备份的数据是一致的。
mysql逻辑备份时要锁定数据,才能保证备份的数据是一致的,影响业务正常的dml使用。
七、热备份
oracle有成熟的热备工具rman,热备时,不影响用户使用数据库。即使备份的数据库不一致,也可以在恢复时通过归档日志和联机重做日志进行一致的回复。
innobackup是结合ibbackup使用的一个脚本,他会协助对.frm文件的备份。
八、sql语句的扩展和灵活性
mysql对sql语句有很多非常实用而方便的扩展,比如limit功能,insert可以一次插入多行数据,select某些管理数据可以不加from。
oracle在这方面感觉更加稳重传统一些。
九、
oracle:既有推或拉式的传统数据,也有dataguard的双机或多机容灾机制,主库出现问题是,可以自动切换备库到主库,但配置管理较复杂。
mysql:配置简单,但主库出问题时,丛库有可能丢失一定的数据。且需要手工切换丛库到主库。
十、性能诊断
oracle有各种成熟的性能诊断调优工具,能实现很多自动分析、诊断功能。比如awr、addm、sqltrace、tkproof等
mysql的诊断调优方法较少,主要有慢查询日志。
十一、权限与安全
mysql的用户与主机有关,感觉没有什么意义,另外更容易被仿冒主机及ip有可乘之机。
oracle的权限与安全概念比较传统,中规中矩。
十二、分区表和分区索引
oracle的分区表和分区索引功能很成熟,可以提高用户访问db的体验。
mysql的分区表还不太成熟稳定。
十三、管理工具
oracle有多种成熟的命令行、图形界面、web管理工具,还有很多第三方的管理工具,管理极其方便高效。mysql管理工具较少,在linux下的管理工具的安装有时要安装额外的包(phpmyadmin, etc),有一定复杂性。
;代表一个语句的结束
/是sqlplus中的一个命令,表示执行上述语句
比如
select from emp;
在sqlplus中你可以通过更改你的sql语句,然后/就可以执行了
两者相比较的话,简单的说,MySQL比较小,而且免费,开源的缘故,现在也很健壮,若不是大型应用的话,MySQL足以应付一切。oracle比较庞大,整个体系都很健全。
简单的说MySQL是实用很好用,oracle就是很好很强大。
我接触过一点Oracle 也在用mysql.
给我的感觉是Oracle 比较严谨,约束条件和要学习的细节方面的问题比较多,逻辑异常复杂.
mysql我是和php一起学的感觉懂点sql的就能弄明白,方面易用.
这样的说法我认为还是不够确切的,实际上,用MySQL支撑的google的数据库、Facebook的数据库、中移动飞信的数据库够大了吧,MySQL还是完成能够支撑一些大规模的应用的,尤其在互联网行业,MySQL的功能可以很方便的实现读写分离后的水平扩展。MySQL的简单易用、稳定可靠、易于扩展都是非常不错的。真要拿Oracle和MySQL相比较的话,从功能角度来看,Oracle肯定是更加丰富和完善的,但事实上,我们80%的应用只是使用了Oracle的30%甚至更少的功能;而这些常用功能MySQL绝大多数都是有的。
仅从互联网行业来看,全球的前20强互联网公司80%都在使用MySQL数据库,只有微软的几个网站没有使用,MySQL在这个领域的确是领先的,这也是为什么Oracle收购后,还是有很多4、一致性Hash原理人看好MySQL的原因所在。
mysql 数据库无法启动INNODB 怎么办求高手解决
# cd odbc-sqlserver-1.4.27-linux-x86-glibc你好,
MYSQL的非空字段也有空的内容,ORACLE里定义了非空字段就不容许有空的内容。按MYSQL的NOT NULL来定义ORACLE表结构, 导数据的时候会产生错误。因此导数据时要对空字符进行判断,如果为NULL或空字符,需要把它改成一个空格的字符串。mysql 数据库无法启动INNODB
有两种方法,一种方法使用mysql的check table和repair table 的sql语句,另一种方法是使用MySQL提供的多个myisamchk, isamchk数据检测恢复工具。前者使用起来比较简便。使用。
1. check table 和 repair table
登陆mysql 终端:
mysql -uxxxxx -p dbname
check table tabTest;
repair table tabTest;
进行修复,修复之后可以在用check table命令来进行检查。在新版本的phpMyAdmin里面也可以使用check/repair的功能。
其中myisamchk适用于MYISAM类型的数据表,而isamchk适用于ISAM类型的数据表。这两条命令的主要参数相同,一般新的系统都使用MYISAM作为缺省的数据表类型,这里以myisamchk为例子进行说明。当发现某个数据表出现问题时可以使用:
myisamchk tablename.MYI
进行检测,如果需要修复的话,可以使用:
myisamchk -of tablename.MYI
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系 836084111@qq.com 删除。